Внедрение EJB-безопасности поэтапно с помощью ролей: поставщик компонентов, ассемблер приложений, средство развертывания

В спецификации "JSR 318: Enterprise JavaBeansTM, версия 3.1" упоминаются роли в качестве поставщика компонентов, сборщика приложений, администратора развертывания и системного администратора в качестве основных участников создания EJB.

Ниже показано, как каждая роль влияет на перспективу безопасности:

  1. Bean Privider: используйте аннотации, такие как @RolesAllowed, @DeclareRoles и т. Д., Чтобы определить логическое представление безопасности отдельного корпоративного компонента.
  2. Application Assembler: изменение / создание дескриптора развертывания определяет логическое представление безопасности всего приложения. Сопоставляет ссылки на роли безопасности с ролями безопасности.
    Не следует путать с группами пользователей, пользователями, принципалами, которые существуют в системной среде целевого предприятия. Они обрабатываются Deployer.
  3. Deployer: Deployer следит за тем, чтобы роли, необходимые для Application Assembler, были доступны в целевой системе. Сопоставляет представление безопасности, указанное Application Assembler, с механизмами и политиками, используемыми доменом безопасности в целевой операционной среде.
  4. Системный администратор: Системный администратор настраивает пользователей и управляет их членством в группах.

Пример вывода каждой роли:

  1. Поставщик бинов: 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. Deployer (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.

Кто-нибудь может привести более полный пример? Или не стесняйтесь добавлять что-либо, может отсутствовать или изменять то, что может быть не так в данном примере? Полный пример процесса обеспечения безопасности может быть полезен для многих людей, изучающих EJB или желающих получить Oracle Certification Expert 1Z0-895.

0 ответов

Другие вопросы по тегам