是否可以禁用RESTEasy的RoleBasedSecurityFilter.java?

时间:2014-09-25 13:31:21

标签: java security rest jboss resteasy

我正在开发一个使用JBoss RESTEasy(resteasy-jaxrs-3.0.8)的Web应用程序,但是我想禁用RoleBasedSecurityFilter.java并且只使用我自己的自定义SecurityInterceptor类(它也实现{ {1}}就像javax.ws.rs.container.ContainerRequestFilter类一样,所以它们都是安全过滤器。)

原因是 RoleBasedSecurityFilter.java 中的line 43调用isUserInRole() method,它在我的应用程序中始终返回false。结果会抛出 ForbiddenException ,这会阻止用户访问他应该有权访问的资源。

我真的希望能够使用@RolesAllowed annotation来声明哪些角色可以访问某些功能,但正如所解释的那样, RoleBasedSecurityFilter 类阻止了这一点。所以我的问题是,有没有人知道如何禁用一个特定的RESTEasy过滤器(即 RoleBasedSecurityFilter )?

我想象它可以在部署描述符(web.xml)中完成(例如使用context-param element),但我不知道如何实际禁用过滤器。

我意识到我还可以更改我正在使用的RESTEasy库中的 RoleBasedSecurityFilter.java 文件中的行,但这种方法对我来说太难了,因为我不想成为我每次升级我的RESTEasy版本时都不得不再次应用这个hack。 (不知道那会是多久......)

1 个答案:

答案 0 :(得分:0)

您可以通过在web.inf部署描述符中添加此配置来启用/禁用基于角色的安全性。

<context-param>
    <param-name>resteasy.role.based.security</param-name>
    <param-value>true</param-value>
</context-param>

希望这有帮助。