2.15. 保护 Jakarta RESTful Web 服务 Web 服务
RESTEasy 支持 Jakarta RESTful Web 服务方法上的 @RolesAllowed、@PermitAll和 @DenyAll 注释。但是,您必须启用基于角色的安全性,才能识别这些注释。
2.15.1. 启用基于角色的安全性 复制链接链接已复制到粘贴板!
按照以下步骤配置 web.xml 文件,以启用基于角色的安全性。
如果应用使用 Jakarta Enterprise Beans,则不要激活基于角色的安全性。Jakarta Enterprise Beans 容器将提供功能,而非 RESTEasy。
为 RESTEasy Jakarta RESTful Web 服务启用基于角色的安全性
-
在文本编辑器中打开应用的
web.xml文件。 在
<添加到该文件中。web-app> 标签内将以下 <context-param><context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param>
<context-param> <param-name>resteasy.role.based.security</param-name> <param-value>true</param-value> </context-param>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
<security-role>标签声明 RESTEasy Jakarta RESTful Web Services WAR 文件中使用的所有角色。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 授权对所有角色的 Jakarta RESTful Web Services 运行时处理的所有 URL 进行访问。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为此应用定义适当的登录配置。
<login-config> <auth-method>BASIC</auth-method> <realm-name>jaxrs</realm-name> </login-config>
<login-config> <auth-method>BASIC</auth-method> <realm-name>jaxrs</realm-name> </login-config>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
基于角色的安全性已在应用内启用,包含一组定义的角色。
示例:基于角色的安全配置
2.15.2. 使用注释保护 Jakarta RESTful Web 服务 复制链接链接已复制到粘贴板!
若要使用注释保护 Jakarta RESTful Web 服务,请完成以下步骤:
- 启用基于角色的安全性.
向 Jakarta RESTful Web Services Web 服务添加安全注释。RESTEasy 支持以下注解:
@RolesAllowed-
定义哪些角色可以访问该方法。所有角色都应在
web.xml文件中定义。 @PermitAll-
允许
web.xml文件中定义的所有角色访问该方法。 @DenyAll- 拒绝对该方法的所有访问。
以下是使用 @RolesAllowed 注释来指定 admin 角色可以访问 Web 服务的示例:
@RolesAllowed("admin")
@Path("/test")
public class TestService {
...
}
@RolesAllowed("admin")
@Path("/test")
public class TestService {
...
}
2.15.3. 设置编程安全性 复制链接链接已复制到粘贴板!
Jakarta RESTful Web 服务包含一个用于收集有关安全请求的安全信息的编程 API。javax.ws.rs.core.SecurityContext 界面有一个方法来确定进行安全 HTTP 调用的用户的身份。它还允许您检查当前用户是否属于某个角色:
您可以通过利用 @ 实例。
Context 注释将它注入字段、setter 方法或资源方法参数来访问 SecurityContext