安全性是任何企業級應用關注的重大問題。它包括用戶身份識別(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>