EJB安全实现逐步完成角色:Bean Provider,Application Assembler,Deployer

时间:2017-01-30 10:06:43

标签: java-ee certificate ejb ejb-3.1 securitydomain

规范" JSR 318:Enterprise JavaBeansTM,版本3.1"将角色称为Bean Provider,Application Assembler,Deployer和System Administrator作为EJB创建的主要角色。

下面每个角色如何为安全预期做出贡献:

  1. Bean Privider:使用@ RolesAllowed,@ DeclareRoles等注释来定义单个企业bean的逻辑安全视图。
  2. 应用程序汇编程序:更改/创建部署描述符定义整个应用程序的逻辑安全性视图。映射安全角色的安全角色引用。
    不应与目标企业系统环境中存在的用户组,用户和主体混淆。这些由Deployer处理。
  3. 部署者:部署者确保应用程序汇编程序所需的角色在目标系统中可用。将Application Assembler指定的安全视图映射到目标操作环境中安全域使用的机制和策略。
  4. 系统管理员:系统管理员配置用户并管理他们对这些组的成员资格。
  5. 每个角色输出的示例:

    1. Bean提供者: TestBean.java

      @Stateless
      public class TestBean {
          @RolesAllowed({"APP-ADMIN"})
          public void sayHello() {
          }
      }
      

      ejb-jar.xml

      <ejb-jar> 
         <enterprise-beans>
              <session>
                  <ejb-name>TestBean</ejb-name>
                  <ejb-class>org.ejb.test.TestBean</ejb-class>
                  <session-type>Stateless</session-type>
              </session>
          </enterprise-beans>
      </ejb-jar>
      
    2. Application Assembler:具有Deployer必须在目标环境的安全域中映射的所有逻辑角色的列表。
      ejb-jar.xml中

      <ejb-jar> 
         <enterprise-beans>
              <session>
                  <ejb-name>TestBean</ejb-name>
                  <ejb-class>org.ejb.test.TestBean</ejb-class>
                  <session-type>Stateless</session-type>
      
                  <security-role-ref>
                      <role-name>APP-ADMIN</role-name>
                      <role-link>ADMIN</role-link>
                  </security-role-ref>
              </session>
          </enterprise-beans>
      
          <assembly-descriptor>
              <security-role>
                  <role-name>ADMIN</role-name>
              </security-role>
      
              <method-permission>
                  <role-name>ADMIN</role-name> <!-- or APP-ADMIN ?-->
                  <method>
                      <ejb-name>TestBean</ejb-name>
                      <method-name>sayHello</method-name>
                  </method>
              </method-permission>
          </assembly-descriptor>
      </ejb-jar>
      
    3. 部署人员(jboss 4.2.3-GA env):创建安全域并为企业应用程序分配主体领域
      登录-config.xml中

      <application-policy name = "MyUserSecurityDomain">
      <authentication>
      <login-module code = "org.jboss.security.auth.spi.DatabaseServerLoginModule" flag = "required">
         <module-option name = "unauthenticatedIdentity">guest</module-option>
         <module-option name = "dsJndiName">java:/jdbc/MyServerDS</module-option>
         <module-option name = "hashAlgorithm">MD5</module-option>
         <module-option name = "hashEncoding">HEX</module-option>
         <module-option name = "principalsQuery">SELECT password FROM app_user WHERE username = ? </module-option>
         <module-option name = "rolesQuery">SELECT role, 'Roles' FROM app_user WHERE username = ? </module-option>
      </login-module>
      </authentication>
      

    4. 系统管理员:确保希望使用企业应用程序的app_user数据库表中的用户具有角色ADMIN。

    5. 任何人都可以提供更完整的例子吗?或者随意添加可能丢失的任何内容或修改给定示例中可能出错的内容? 安全流程的完整示例对于许多学习EJB或希望获得Oracle Certification Expert 1Z0-895的人员非常有用。

0 个答案:

没有答案