EJB安全


安全性是任何企業級應用關注的重大問題。它包括使用者身份識別(S)或系統存取的應用程式,並允許或拒絕的存取應用程式內的資源。在EJB中,安全性可以宣告的方式稱為宣告性安全EJB容器管理的安全問題,或者自定義程式碼可以在EJB處理安全問題的關注,通過自已宣告。

安全的重要術語

  • 認證 - 這是確保使用者存取系統或應用程式被驗證為是正品的方法。

  • 授權 - 這是過程,確保使用者有權存取系統資源的許可權級別。

  • 使用者 - 使用者表示存取該應用程式的用戶端或系統。

  • 使用者組 - 使用者可能具有一定部門例如管理員組的一部分。

  • 使用者角色 - 角色定義授權使用者有許可權存取系統資源的水平。

容器管理安全

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