Skip to content

Commit a2f6602

Browse files
authored
Merge pull request #5813 from geoand/#5763
Fix security issue related to the inclusion of annotations on secured method parameters
2 parents d9bc530 + 27d9e68 commit a2f6602

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

extensions/security/deployment/src/main/java/io/quarkus/security/deployment/SecurityProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ private ResultHandle paramTypes(MethodCreator ctor, List<Type> parameters) {
199199
ResultHandle result = ctor.newArray(String.class, ctor.load(parameters.size()));
200200

201201
for (int i = 0; i < parameters.size(); i++) {
202-
ctor.writeArrayValue(result, i, ctor.load(parameters.get(i).toString()));
202+
ctor.writeArrayValue(result, i, ctor.load(parameters.get(i).name().toString()));
203203
}
204204

205205
return result;

integration-tests/main/src/main/java/io/quarkus/it/rest/RBACSecuredResource.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44
import javax.annotation.security.PermitAll;
55
import javax.annotation.security.RolesAllowed;
66
import javax.inject.Inject;
7+
import javax.validation.Valid;
78
import javax.ws.rs.GET;
89
import javax.ws.rs.Path;
10+
import javax.ws.rs.core.Context;
11+
import javax.ws.rs.core.SecurityContext;
12+
import javax.ws.rs.core.UriInfo;
913

1014
import io.quarkus.security.Authenticated;
1115

@@ -25,6 +29,14 @@ public String forTesterOnly() {
2529
return "forTesterOnly";
2630
}
2731

32+
@GET
33+
@RolesAllowed("tester")
34+
@Path("forTesterOnlyWithMethodParamAnnotations")
35+
public String forTesterOnlyWithMethodParamAnnotations(@Context SecurityContext ctx, @Context UriInfo uriInfo,
36+
@Valid String message) {
37+
return "forTesterOnlyWithMethodParamAnnotations";
38+
}
39+
2840
@GET
2941
@DenyAll
3042
@Path("denied")

integration-tests/main/src/test/java/io/quarkus/it/main/RBACAccessTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ public void shouldRestrictAccessToSpecificRole() {
2525
Optional.of("forTesterOnly"));
2626
}
2727

28+
@Test
29+
public void shouldRestrictAccessToSpecificRoleAndMethodParameterAnnotationsShouldntAffectAnything() {
30+
String path = "/rbac-secured/forTesterOnlyWithMethodParamAnnotations";
31+
assertForAnonymous(path, 401, Optional.empty());
32+
assertStatusAndContent(RestAssured.given().auth().preemptive().basic("stuart", "test"), path, 403, Optional.empty());
33+
assertStatusAndContent(RestAssured.given().auth().preemptive().basic("scott", "jb0ss"), path, 200,
34+
Optional.of("forTesterOnlyWithMethodParamAnnotations"));
35+
}
36+
2837
@Test
2938
public void shouldFailToAccessForbidden() {
3039
assertForAnonymous("/rbac-secured/denied", 401, Optional.empty());

0 commit comments

Comments
 (0)