我使用WildFly 16,并且正在Java EE 8安全API上进行一些实验。我有一个像这样的JAX-RS端点(在web.xml,jboss-web.xml中有一些定义):
@Path("/secured")
public class SecuredResource {
@Inject
private SecurityContext securityContext;
@GET
@Path("/greet")
@RolesAllowed({"USER"})
@Produces(MediaType.TEXT_PLAIN)
public Response greet() {
return Response.ok().entity("Hello " + securityContext.getCallerPrincipal().getName()).build();
}
}
如我所料,不具有“ USER”角色的请求不会到达那里的代码,但是那些请求将获得带有代码200的http响应。对于这些请求,我想返回“ 401未经授权”,而不是200
According to some document of RESTEasy,它的行为应该是这样的:
Resteasy如何进行授权?好吧,它真的很简单。它只是查看方法是否使用@RolesAllowed注释,然后使用HttpServletRequest.isUserInRole做注释。如果@RolesAllowed之一通过,则允许请求,否则,将使用401(未经授权)响应代码发送回响应。
但是我的情况并非如此。我该如何使其工作?
This is the whole project of my experimental implementation。它还具有a test case which shows my expectation。它可以与./mvnw clean verify