RESTEasy对于未满足@RolesAllowed

时间:2019-05-26 00:45:07

标签: java jax-rs wildfly resteasy java-ee-8

我使用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

一起运行

0 个答案:

没有答案