13.3. Amostra da Senha Remota de Segurança


A amostra apresentada nesta seção demonstra a autenticação ao lado do cliente do usuário através do SRP assim como o acesso protegido subsequente a um EJB simples usando o desafio da sessão SRP como credencial do usuário. O código de teste implanta um EJB JAR que inclui um SAR para a configuração da configuração do módulo do logon ao lado do servidor e serviços SRP.
A configuração do módulo do logon ao lado do servidor é dinamicamente instalada usando o SecurityConfig MBean. Uma implantação personalizada da interface SRPVerifierStore é também usada na amostra. A interface usa um armazenamento em memória que é gerado a partir do arquivo de propriedades Java, ao invés do armazenamento do objeto serializado conforme usado pelo SRPVerifierStoreService.
O serviço personalizado é o org.jboss.book.security.ex3.service.PropertiesVerifierStore. Segue abaixo os conteúdos do JAR que contém a amostra dos serviços EJB e SRP.
[examples]$ jar tf output/security/security-ex3.jar 
META-INF/MANIFEST.MF
META-INF/ejb-jar.xml
META-INF/jboss.xml
org/jboss/book/security/ex3/Echo.class
org/jboss/book/security/ex3/EchoBean.class
org/jboss/book/security/ex3/EchoHome.class
roles.properties
users.properties
security-ex3.sar
Copy to Clipboard Toggle word wrap
Os itens relacionados ao SRP chave nesta amostra são a configuração dos serviços SRP MBean e as configurações do módulo de logon SRP. O descritor jboss-service.xml do security-ex3.sar está descrito no Exemplo 13.3, “O Descritor security-ex3.sar jboss-service.xml”.
As configurações do módulo de logon ao lado do servidor e do cliente de amostra estão descritas no Exemplo 13.4, “Configuração JAAS padrão ao lado do cliente.” e Exemplo 13.5, “A configuração XMLLoginConfig ao lado do servidor” gerado.

Exemplo 13.3. O Descritor security-ex3.sar jboss-service.xml

<server>
    <!-- The custom JAAS login configuration that installs
         a Configuration capable of dynamically updating the
         config settings -->

    <mbean code="org.jboss.book.security.service.SecurityConfig" 
           name="jboss.docs.security:service=LoginConfig-EX3">
        <attribute name="AuthConfig">META-INF/login-config.xml</attribute>
        <attribute name="SecurityConfigName">jboss.security:name=SecurityConfig</attribute>
    </mbean>

    <!-- The SRP service that provides the SRP RMI server and server side
         authentication cache -->
    <mbean code="org.jboss.security.srp.SRPService" 
           name="jboss.docs.security:service=SRPService">
        <attribute name="VerifierSourceJndiName">srp-test/security-ex3</attribute>
        <attribute name="JndiName">srp-test/SRPServerInterface</attribute>
        <attribute name="AuthenticationCacheJndiName">srp-test/AuthenticationCache</attribute>
        <attribute name="ServerPort">0</attribute>
        <depends>jboss.docs.security:service=PropertiesVerifierStore</depends>
    </mbean>

    <!-- The SRP store handler service that provides the user password verifier
         information -->
    <mbean code="org.jboss.security.ex3.service.PropertiesVerifierStore"
           name="jboss.docs.security:service=PropertiesVerifierStore">
        <attribute name="JndiName">srp-test/security-ex3</attribute>
    </mbean>
</server>
Copy to Clipboard Toggle word wrap
Os serviços de amostra são o ServiceConfig, o PropertiesVerifierStore e o SRPService MBeans. Perceba que o atributo JndiName do PropertiesVerifierStore é igual ao atributo VerifierSourceJndiName do SRPService. Além disso, o SRPService depende do PropertiesVerifierStore. Isto é solicitado uma vez que o SRPService precisa de uma implantação da interface SRPVerifierStore para acesso à informação da verificação da senha do usuário.

Exemplo 13.4. Configuração JAAS padrão ao lado do cliente.

srp {
    org.jboss.security.srp.jaas.SRPLoginModule required
    srpServerJndiName="srp-test/SRPServerInterface"
    ;
                    
    org.jboss.security.ClientLoginModule required
    password-stacking="useFirstPass"
    ;
};
Copy to Clipboard Toggle word wrap
A configuração do módulo de logon ao lado do cliente faz uso do SRPLoginModule com um valor de opção srpServerJndiName que corresponde ao valor do atributo SRPService JndiName do componente do servidor do JBoss (srp-test/SRPServerInterface). O ClientLoginModule deve também ser configurado com o valor password-stacking="useFirstPass" para propagar os credenciais de autenticação do usuário gerado pelo SRPLoginModule à camada de invocação EJB.

Exemplo 13.5. A configuração XMLLoginConfig ao lado do servidor

<application-policy name="security-ex3">
    <authentication>
        <login-module code="org.jboss.security.srp.jaas.SRPCacheLoginModule"
                      flag = "required">
            <module-option name="cacheJndiName">srp-test/AuthenticationCache</module-option>
        </login-module>
        <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
                      flag = "required">
            <module-option name="password-stacking">useFirstPass</module-option>
        </login-module>
    </authentication>
</application-policy>
Copy to Clipboard Toggle word wrap
Existem dois problemas a serem destacados sobre a configuração do módulo de logon ao lado do servidor:
  1. A opção de configuração cacheJndiName=srp-test/AuthenticationCache informa o SRPCacheLoginModule sobre a localização do CachePolicy que contém o SRPServerSession para usuários que foram autenticados em relação ao SRPService. Este valor corresponde ao SRPService de valor do atributo AuthenticationCacheJndiName.
  2. A configuração inclui um UsersRolesLoginModule com a opção de configuração password-stacking=useFirstPass. Você deve usar um segundo módulo de logon com o SRPCacheLoginModule, uma vez que o SRP é apenas uma tecnologia de autenticação. Para determinação de funções do principal que em troca determina as permissões associadas, um segundo módulo de logon deve ser configurado para aceitar os credenciais de autenticação validados pelo SRPCacheLoginModule.
O UsersRolesLoginModule aumenta a autenticação SRP pelo arquivo de propriedades baseado na autorização. As funções do usuário são obtidas a partir do arquivo roles.properties no EJB JAR.
Rode a amostra do cliente 3 pela execução do seguinte comando a partir do diretório das amostras do livro:
[examples]$ ant -Dchap=security -Dex=3 run-example
...
run-example3:
     [echo] Waiting for 5 seconds for deploy...
     [java] Logging in using the 'srp' configuration
     [java] Created Echo
     [java] Echo.echo()#1 = This is call 1
     [java] Echo.echo()#2 = This is call 2
Copy to Clipboard Toggle word wrap
No diretório examples/logs, o arquivo ex3-trace.log contém um rastro detalhado ao lado do cliente do algoritmo SRP. Os rastros apresentam passo-a-passo da construção das chaves públicas, desafios, chave de sessão e verificação.
Observe que o cliente leva um bom tempo para execução, relativo às outras amostras simples. O motivo disto é a construção da chave pública do cliente. Isto envolve a criação de um número alternado extremamente criptografado e este processo demora mais quando é primeiramente executado. As tentativas de autenticação subsequentes com o mesmo VM são muito mais rápidas.
Perceba que o Echo.echo()#2 falha com uma exceção de autenticação. O código do cliente é suspenso por 15 segundos após realizar a primeira chamada para demonstrar o comportamento da expiração do cache SRPService. O intervalo da política de cache SRPService é configurado para 10 segundos para forçar este problema. Você deve configurar o intervalo do cache corretamente ou manusear a re-autenticação na falha, conforme descrito na Seção 13.3, “Amostra da Senha Remota de Segurança”.
Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat