apache / apache/texera

Enforce @RolesAllowed / @PermitAll / @DenyAll annotation coverage at service startup

Open
#5,301 1 comment 0 reactions 1 assignee Claimed by @Ma77Ball View on GitHub
Dominant language
Scala
Stars
314
Forks
187
Avg merge
1d 21h
Merged PRs (30d)
214

Description

### Task Summary

Follow-up to #5199. The microservices now register `RolesAllowedDynamicFeature`, which enforces `@RolesAllowed` *when present* but does nothing for an endpoint that has no role annotation at all — that endpoint is silently public. The `*RunSpec` mock tests in #5199 only verify the feature is registered; they cannot catch a newly added method that forgot a role annotation.

Add a startup-time check that scans every Jersey resource registered on `environment.jersey()` and asserts every HTTP-mapped method (`@GET` / `@POST` / `@PUT` / `@DELETE` / `@PATCH` / `@HEAD` / `@OPTIONS`) carries one of `@RolesAllowed`, `@PermitAll`, or `@DenyAll` (taking class-level annotations into account). Fail fast — log + throw — if any method is unannotated.

This turns "I forgot to annotate" from a silent open hole into a startup error, which is the regression `ConfigResourceAuthSpec` partly guards against today but only for the endpoints it knows about.

### Task Type

- [x] DevOps / Deployment / CI

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.