Ejb 简明教程

EJB - Security

安全性是任何企业级应用程序的主要关注点。它包括识别访问应用程序的用户或系统。基于识别,它允许或拒绝对应用程序内资源的访问。EJB 容器管理标准安全问题,也可以对其进行定制以处理任何特定安全问题。

Important Terms of Security

  1. Authentication − 这是确保验证访问系统或应用程序的用户是真实的处理。

  2. Authorization − 这是确保经过验证的用户具有访问系统资源的正确权限级别的处理。

  3. User − 用户表示访问应用程序的客户端或系统。

  4. User Groups − 用户可以属于具有特定权限的组,例如管理员组。

  5. User Roles − 角色定义用户具有的权限级别或访问系统资源的权限。

Container Managed Security

EJB 3.0 已指定 EJB 容器实现的以下安全属性/注释。

  1. DeclareRoles − 指出类将接受声明的角色。注释应用于类级别。

  2. RolesAllowed − 指出方法可被指定角色的用户访问。可以应用于类级别,从而所有类方法都可以由指定角色的用户访问。

  3. PermitAll − 指出所有用户都可以访问业务方法。它可以应用于类以及方法级别。

  4. DenyAll − 指出任何用户都无法访问在类或方法级别指定的业务方法。

Example

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

Security Configuration

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

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