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>