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>