使用jersey在JAX-RS中设置@RolesAllowed的角色

时间:2013-03-03 16:09:56

标签: java web-services rest jersey jax-rs

我尝试使用Basic Authentication来更改server.xml的{​​{1}}配置,但它无效:BASIC authentication in jersey JAX-RS service and Tomcat 6.0 getting failed

因此我选择了一种不需要服务器特定配置的方法,我可以直接在我的代码中添加角色(客户端或服务器;不确定可用选项)。

请提供一些有关设置用户角色的可能选项的建议,以便我可以使用Tomcat 6.0注释对我的Web服务方法进行身份验证。

1 个答案:

答案 0 :(得分:1)

您需要返回并找出您的安全限制无效的原因。在继续使用JDBC领域之前,可能先从默认文件领域开始。 @RolesAllowed在一个触发容器行为的注释中。

如果你真的想自己做(一个坏主意),你可能首先要创建一个自定义的servlet过滤器来实现整个基本的http质询机制。接下来,您必须替换Jersey中的SecurityContext提供程序。

它们在球衣中启用@RolesAllowed的“东西”是这样的:http://java.net/projects/jersey/sources/svn/content/trunk/jersey/jersey-server/src/main/java/com/sun/jersey/api/container/filter/RolesAllowedResourceFilterFactory.java顺便说一下,不要忘记添加为你的球衣servlet的init-param。 RolesAllowedResourceFilterFactory从注入的SecurityContext获取其安全信息,我确信在某些时候只需委托给Servlet API获取凭据信息。

所以基本上如果你不想花时间让安全限制工作,你将最终取代大部分链......就像我说的那样,一个坏主意。

应用程序服务器上的功能可以让您不必花时间创建基础架构代码,如果您编写自己的基础架构代码,那么您将会遇到不好的时间。