17.4. Uso do Security Domain em seu Aplicativo

Visão Geral

Para uso de um security domain em seu aplicativo, primeiro você precisa configurar o domain tanto no arquivo de configuração do servidor ou arquivo descritor do aplicativo. Então, você deve adicionar as anotações requeridas ao EJB que usam isto. Este tópico descreve as etapas solicitadas para uso de um security domain em seu aplicativo.

Procedimento 17.1. Configure o seu Aplicativo para Uso de um Security Domain

  1. Definição do Security Domain

    Você pode definir o security domain tanto no arquivo de configuração do servidor ou arquivo descritor aplicativo.
    • Configuração do security domain no arquivo de configuração do servidor.

      O security domain é configurado no subsistema security do arquivo de configuração do servidor. Caso a instância do JBoss EAP 6 estiver sendo executada num managed domain, este é o arquivo domain/configuration/domain.xml. Caso a instância do JBoss EAP 6 estiver sendo executada como um servidor autônomo, este é o arquivo standalone/configuration/standalone.xml.
      Os security domains other, jboss-web-policy e jboss-ejb-policy são fornecidos por default no JBoss EAP 6. A seguinte amostra XML foi copiada a partir do subsistema security no arquivo de configuração do servidor.
      <subsystem xmlns="urn:jboss:domain:security:1.2">
          <security-domains>
              <security-domain name="other" cache-type="default">
                  <authentication>
                      <login-module code="Remoting" flag="optional">
                          <module-option name="password-stacking" value="useFirstPass"/>
                      </login-module>
                      <login-module code="RealmDirect" flag="required">
                          <module-option name="password-stacking" value="useFirstPass"/>
                      </login-module>
                  </authentication>
              </security-domain>
              <security-domain name="jboss-web-policy" cache-type="default">
                  <authorization>
                      <policy-module code="Delegating" flag="required"/>
                  </authorization>
              </security-domain>
              <security-domain name="jboss-ejb-policy" cache-type="default">
                  <authorization>
                      <policy-module code="Delegating" flag="required"/>
                  </authorization>
              </security-domain>
          </security-domains>
      </subsystem>
      
      
      Você pode configurar os security domains adicionais conforme seja necessário usando o Console de Gerenciamento ou CLI.
    • Configuração do security domain no arquivo do descritor do aplicativo

      O security domain é especificado no elemento filho <security-domain> do elemento <jboss-web> no arquivo WEB-INF/jboss-web.xml do aplicativo. A seguinte amostra configura o security domain nomeado my-domain.
      <jboss-web>
          <security-domain>my-domain</security-domain>
      </jboss-web>        
              
      
      
      Esta é uma das muitas configurações que você pode especificar no descritor WEB-INF/jboss-web.xml.
  2. Adição da Anotação Requerida para o EJB

    Você configura a segurança no EJB usando as anotações @SecurityDomain e @RolesAllowed. A seguinte amostra de código EJB limita o acesso ao security domain other por usuários na função guest.
    package example.ejb3;
    
    import java.security.Principal;
    
    import javax.annotation.Resource;
    import javax.annotation.security.RolesAllowed;
    import javax.ejb.SessionContext;
    import javax.ejb.Stateless;
    
    import org.jboss.ejb3.annotation.SecurityDomain;
    
    /**
     * Simple secured EJB using EJB security annotations
     * Allow access to "other" security domain by users in a "guest" role.
     */
    @Stateless
    @RolesAllowed({ "guest" })
    @SecurityDomain("other")
    public class SecuredEJB {
    
       // Inject the Session Context
       @Resource
       private SessionContext ctx;
    
       /**
        * Secured EJB method using security annotations
        */
       public String getSecurityInfo() {
          // Session context injected using the resource annotation
          Principal principal = ctx.getCallerPrincipal();
          return principal.toString();
       }
    }
    
    Para maiores amostras de código, consulte o ejb-security quickstart do pacote do JBoss EAP 6 Quickstarts, disponível a partir do Portal do Cliente Red Hat.