LDAP Failover e Login Module no JBoss AS 5.1

Postado em Atualizado em

A alguns dias atrás precisei configurar um  login module no JBoss que realizasse autenticação em servidores LDAP. Até ai tudo bem, isso eu já configurei várias vezes LDAP no JBoss, mas um dos requisitos era desconhecido para mim: O login module devia dar suporte a multiplos servidores. Pesquisando um pouco acabei encontrando a solução e é isso que vamos aprender no post de hoje,

Aqui em casa utilizei meus 2 notebooks para simular uma ambiente um pouco mais real. Nos dois tenho o Red Hat Enterprise Linux 6 com o OpenLDAP instalado. Estou utilizando o JBoss no Windows Server 2003 como client.

Para instalar o LDAP você pode utilizar o post Utilizando LDAP Login Module no JBoss AS 7.1 , que tem um exemplo de como instalar e criar a estrutura básica. Você pode fazer o mesmo procedimento para os 2 servidores.

Em jboss-5.1.0.GA\server\all\conf edite o arquivo login-config.xml,  adicione o application policy  my_ldap_security_domain, e deixe-o como abaixo:

<application-policy name="my_ldap_security_domain">
 <authentication>
  <login-module code="org.jboss.security.auth.spi.LdapExtLoginModule" flag="required">
    <module-option name="java.naming.factory.initial">com.sun.jndi.ldap.LdapCtxFactory</module-option>
    <module-option name="java.naming.provider.url">ldap://192.168.0.172:389/ ldap://192.168.0.115:389</module-option>
    <module-option name="java.naming.security.authentication">simple</module-option>
    <module-option name="bindDN">uid=admin,ou=People,dc=example,dc=com</module-option>
    <module-option name="bindCredential">secret</module-option>
    <module-option name="baseCtxDN">ou=People,dc=example,dc=com</module-option>
    <module-option name="baseFilter">(uid={0})</module-option>
    <module-option name="rolesCtxDN">ou=Roles,dc=example,dc=com</module-option>
    <module-option name="roleFilter">(member={1})</module-option>
    <module-option name="roleAttributeID">cn</module-option>
    <module-option name="throwValidateError">true</module-option>
    <module-option name="searchScope">ONELEVEL_SCOPE</module-option>
   </login-module>
  </authentication>
</application-policy>

A linha que faz a “mágica” é :

 <module-option name="java.naming.provider.url">ldap://192.168.0.172:389/ ldap://192.168.0.115:389</module-option>

Altere os IPs conforme o seu ambiente. Para testes eu criei uma aplicação bem simples que vou deixar aqui para download.
Realize o deploy dessa aplicação tente se autenticar, agora pare um dos servidores LDAP e tente novamente. Caso realize essas tarefas com sucesso o seu ambiente está funcionando corretamente.

Nos próximos post vou explicar para que serve cada atributo utilizado no LdapExtLoginModule.

Abraços

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s