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 服务启用基于角色的安全性

  1. 在文本编辑器里打开应用程序的 web.xml 文件。
  2. 添加下列 <context-param> 到文件的 web-app 标签下:
    <context-param>
        <param-name>resteasy.role.based.security</param-name>
        <param-value>true</param-value>
    </context-param>
    
    
  3. 使用 <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>
        
    
    
    
    
  4. 为所有角色授权对 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>