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.
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
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.
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
Existem dois problemas a serem destacados sobre a configuração do módulo de logon ao lado do servidor:
- A opção de configuração
cacheJndiName=srp-test/AuthenticationCache
informa oSRPCacheLoginModule
sobre a localização doCachePolicy
que contém oSRPServerSession
para usuários que foram autenticados em relação aoSRPService
. Este valor corresponde aoSRPService
de valor do atributoAuthenticationCacheJndiName
. - A configuração inclui um
UsersRolesLoginModule
com a opção de configuraçãopassword-stacking=useFirstPass
. Você deve usar um segundo módulo de logon com oSRPCacheLoginModule
, 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 peloSRPCacheLoginModule
.
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:
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”.