2.15. 保护 JAX-RS Web 服务

RESTEasy 支持 JAX-RS 方法上的 @RolesAllowed、@PermitAll 和 @DenyAll 注释。但是,您必须启用基于角色的安全性,才能识别这些注释。

2.15.1. 启用基于角色的安全性

按照以下步骤配置 web.xml 文件,以启用基于角色的安全性。

警告

如果应用使用了 EJB,则不要激活基于角色的安全性。EJB 容器将提供功能,而非 RESTEasy。

为 RESTEasy JAX-RS Web 服务启用基于角色的安全性

  1. 在文本编辑器中打开应用的 web.xml 文件。
  2. < web-app> 标签内将以下 <context-param > 添加到该文件中。

    <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>
  5. 为此应用定义适当的登录配置。

    <login-config>
      <auth-method>BASIC</auth-method>
      <realm-name>jaxrs</realm-name>
    </login-config>

基于角色的安全性已在应用内启用,包含一组定义的角色。

示例:基于角色的安全配置

<web-app>

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

  <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>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>jaxrs</realm-name>
  </login-config>

  <security-role>
    <role-name>admin</role-name>
  </security-role>
  <security-role>
    <role-name>user</role-name>
  </security-role>

</web-app>