15.5. JAX-RS 应用程序的安全性
15.5.1. 为 RESTEasy JAX-RS Web 服务启用基于角色的安全性 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
总结
RESTEasy 支持 JAX-RS 方法上的 @RolesAllowed、@PermitAll 和 @DenyAll 注解。然而,在默认情况下它并不承认这些注解。请遵循这些步骤来配置 web.xml 文件并启用基于角色的安全性。
警告
如果应用程序使用了 EJB,请不要机或基于角色的安全性。EJB 容器而不是 RESTEasy 将提供这个功能。
过程 15.3. 为 RESTEasy JAX-RS Web 服务启用基于角色的安全性
- 在文本编辑器里打开应用程序的
web.xml文件。 - 添加下列 <context-param> 到文件的
web-app标签下:<context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param> - 使用 <security-role> 标签声明在 RESTEasy JAX-RS WAR 文件里使用的角色:
<security-role><role-name>ROLE_NAME</role-name></security-role><security-role><role-name>ROLE_NAME</role-name></security-role> - 为所有角色授权对 JAX-RS 运行时处理的所有 URL 的访问:
<security-constraint><web-resource-collection><web-resource-name>Resteasy</web-resource-name><url-pattern>/PATH</url-pattern></web-resource-collection><auth-constraint><role-name>ROLE_NAME</role-name><role-name>ROLE_NAME</role-name></auth-constraint></security-constraint>
结果
这个应用程序里已经启用了基于角色的安全性并定义了一系列角色。
例 15.12. 基于角色的安全性配置示例
<web-app>
<context-param>
<param-name>resteasy.role.based.security</param-name>
<param-value>true</param-value>
</context-param>
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>Resteasy</web-resource-name>
<url-pattern>/security</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
<role-name>user</role-name>
</auth-constraint>
</security-constraint>
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>user</role-name>
</security-role>
</web-app>