您可以使用注释或使用部署描述符为 EJB 应用程序提供安全。
在 Java™ EE 5 之前,如果要对给定的应用程序使用授权,您需要在应用程序部署描述符 ejb-jar.xml 或 web.xml 中指定授权信息。
您可以在应用程序中直接使用注释来设置安全性。
公共安全性注释
JSR
250 定义了一些公共安全性注释。定义了 5 种安全性注释:
- javax.annotation.security.PermitAll:
- 可在类型级别或方法级别使用。
- 指示任何人均可访问给定的方法或给定 EJB 的所有业务方法。
- javax.annotation.security.DenyAll:
- 可在方法级别使用。
- 指示任何人均无法访问 EJB 中的给定方法。
- javax.annotation.security.RolesAllowed:
- 可在类型级别或方法级别使用。
- 指示与角色列表相关联的用户可以访问给定的方法或 EJB 中的所有业务方法。
- javax.annotation.security.DeclareRoles:
- 可在类型级别使用。
- 定义用于安全性检查的角色。将由 EJBContext.isCallerInRole、HttpServletRequest.isUserInRole 和 WebServiceContext.isUserInRole 使用。
- javax.annotation.security.RunAs:
示例:
@Stateless
@RolesAllowed("team")
public class TestEJB implements Test {
@PermitAll
public String hello(String msg) {
return "Hello, " + msg;
}
public String goodbye(String msg) {
return "Goodbye, " + msg;
}
}
在本示例中,hello() 方法可供任何人访问,而 goodbye() 方法则供角色小组的用户访问。