EJB - 安全性



安全性是任何企业级应用程序的主要关注点。它包括识别访问应用程序的用户或系统。根据识别结果,它允许或拒绝访问应用程序内的资源。EJB 容器管理标准安全问题,或者可以自定义以处理任何特定的安全问题。

安全的重要术语

  • 身份验证 - 这是确保访问系统或应用程序的用户被验证为真实的流程。

  • 授权 - 这是确保经过身份验证的用户拥有访问系统资源的正确权限级别的流程。

  • 用户 - 用户代表访问应用程序的客户端或系统。

  • 用户组 - 用户可能是拥有某些权限的组的一部分,例如管理员组。

  • 用户角色 - 角色定义用户拥有的权限级别或访问系统资源的权限。

容器管理安全性

EJB 3.0 指定了以下安全属性/注解,EJB 容器会实现这些属性/注解。

  • DeclareRoles - 指示类将接受声明的角色。注解应用于类级别。

  • RolesAllowed - 指示方法可以被指定角色的用户访问。可以应用于类级别,从而导致类中的所有方法都可以被指定角色的用户访问。

  • PermitAll - 指示业务方法对所有人都是可访问的。它可以应用于类级别以及方法级别。

  • DenyAll - 指示业务方法对类或方法级别指定的任何用户都不可访问。

示例

package com.tutorialspoint.security.required;
 
import javax.ejb.*
 
@Stateless
@DeclareRoles({"student" "librarian"})
public class LibraryBean implements LibraryRemote {

   @RolesAllowed({"librarian"})
   public void delete(Book book) {
	  //delete book
   }
   
   @PermitAll
   public void viewBook(Book book) {
      //view book
   }
   
   @DenyAll
   public void deleteAll() {
      //delete all books
   } 
}

安全配置

在配置文件中映射角色和用户组。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<ejb-jar>
   <security-role-mapping>
      <role-name>student</role-name>
      <group-name>student-group</group-name>
   </security-role-mapping>
   <security-role-mapping>
      <role-name>librarian</role-name>
      <group-name>librarian-group</group-name>
   </security-role-mapping>  
   <enterprise-beans/>
</ejb-jar>
广告