Utilizando LDAP Login Module no JBoss AS 7.1

Postado em Atualizado em

Segundo a Wikipedia LDAP Lightweight Directory Access Protocol, ou LDAP, é um protocolo para atualizar e pesquisar diretórios rodando sobre TCP/IP.

Um servidor LDAP pode fornecer uma central de informações de diretório para:

• As credenciais do usuário (login e senha)
• Informações de diretório do usuário (como nomes e endereços de correio electrônico)
• Web diretórios

Vamos instalar o OpenLDAP e criar a nossa primeira estrutura de diretórios.

Instalando e Criando a Estrutura Inicial do OpenLDAP

Para instalar o LDAP no CentOS 6.2, execute o comando abaixo:

   yum install openldap openldap-servers openldap-devel compat-openldap php-ldap openldap-clients

O próximo passo é gerar a senha root do Distinguished Name (dn) :

  /usr/sbin/slappasswd

Anote o Hash retornado:

{SSHA}lQtV0mTn20N8PLuurHjoqgkXMPe0owG3

Copie o DB_CONFIG.example para /var/lib/ldap/ :

  cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

Edite o arquivo de configuração:

  vim /etc/openldap/ldap.conf

E deixe-o como abaixo:

 include /etc/openldap/schema/core.schema
 include /etc/openldap/schema/cosine.schema
 include /etc/openldap/schema/inetorgperson.schema
 include /etc/openldap/schema/nis.schema
 allow bind_v2
 pidfile /var/run/openldap/slapd.pid
 argsfile /var/run/openldap/slapd.args
 database bdb
 suffix "dc=example,dc=com"
 rootdn "cn=Manager,dc=example,dc=com"
 rootpw {SSHA}lQtV0mTn20N8PLuurHjoqgkXMPe0owG3
 directory /var/lib/ldap
 index objectClass eq,pres
 index ou,cn,mail,surname,givenname eq,pres,sub
 index uidNumber,gidNumber,loginShell eq,pres

Para iniciar o serviço execute:

  /etc/init.d/slapd start

Agora crie o arquivo LDIF, conforme a estrutura abaixo:

dn: dc=example,dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
dc: example
o: MCC

dn: ou=People,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: People

dn: uid=admin,ou=People,dc=example,dc=com
objectclass: top
objectclass: uidObject
objectclass: person
uid: admin
cn: Manager
sn: Manager
userPassword: secret

dn: ou=Roles,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: Roles

dn: cn=Manager,ou=Roles,dc=example,dc=com
objectClass: top
objectClass: groupOfNames
cn: Manager
description: the Sample group
member: uid=admin,ou=People,dc=example,dc=com

Adicione usuário ao LDAP, utilizando o comando abaixo:

  ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f users.ldif

Enter LDAP Password:
adding new entry “dc=example,dc=com”
adding new entry “ou=People,dc=example,dc=com”
adding new entry “uid=admin,ou=People,dc=example,dc=com”
adding new entry “ou=Roles,dc=example,dc=com”
adding new entry “cn=Manager,ou=Roles,dc=example,dc=com”

Se ocorrer algum problema, sigam as dicas desse link: http://www.ezylinux.com/en/red-hat-6-how-to-fixes-ldapadd-ldap_bind-invalid-credentials-49/

Configurando o JBoss AS 7.1

O primeiro passo é adicionar o “my_ldap_security_domain”  no arquivo JBOSS_HOME/standalone/configuration/standalone.xml , como abaixo:

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

Adicione também  a categoria para o logging:

<logger category="org.jboss.security">
  <level name="TRACE"/>
</logger>

Agora crie uma aplicação para utilizar o dominio de segurança my_ldap_security_domain.

No jboss-web.xml , adicione o dominio de segurança:

<jboss-web>
    <security-domain>java:/jaas/my_ldap_security_domain</security-domain>
</jboss-web>

E no web.xml,  as configurações como abaixo:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>HtmlAuth</web-resource-name>
    <description>application security constraints
    </description>
    <url-pattern>/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>Manager</role-name>
  </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>Test LDAP</realm-name>
</login-config>
<security-role>
    <role-name>Manager</role-name>
</security-role>

Faça o deploy e acesse a aplicação. Será solicitado usuário e senha, adicionados anteriormente ( users.ldif  –> admin / secret ) .

Vou deixar aqui a aplicação web criada para testar a autenticação no LDAP, o arquivo users.ldif e o standalone.xml.

Espero que tenha ajudado.
Abraços

Fonte: http://blog.javachap.com/index.php/installing-openldap-on-centos/

12 comentários em “Utilizando LDAP Login Module no JBoss AS 7.1

    William Antônio disse:
    8 de março de 2012 às 17:44

    Obrigado, muito boa a explicação da parte do LDAP!

    E o Infinispan?

    […] 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 do LDAP. Você pode fazer o mesmo […]

    Nookala disse:
    13 de maio de 2013 às 7:49

    Hi Mauricio,

    I had posted a question recently on stack overflow and would appreciate your expert insight on it. Here is the link for the question:
    http://stackoverflow.com/questions/16483236/jboss-connection-configuration-for-ldap

    Thanks,
    Nookala

    Robson disse:
    25 de junho de 2013 às 18:54

    Fera segui esse post porém estou com esse erro

    ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required

      Mauricio Magnani Jr respondido:
      25 de junho de 2013 às 21:34

      Oi Robson,

      Aparentemente o erro está no password do user armazenado no AD… como está configurado o seu login module?

      Abs

    Robson disse:
    27 de junho de 2013 às 16:35

    Mauricio Magnani Jr,

    esta configurado assim no standalone.xml

    Robson disse:
    28 de junho de 2013 às 11:02

    Mauricio Magnani Jr

    estou com o erro ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required
    at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:270) [picketbox-4.0.7.Final.jar:4.0.7.Final]

    existe a possibilidade de meu arquivo de configuração do Jboss não esta entendendo minha senha caso ela ter algum caracter especial tipo um “@”, “#” etc.. ?

    Adriano Schmidt disse:
    30 de janeiro de 2014 às 10:46

    fala maurício.. o zip não está funcionando.. não consigo baixá-lo..

    abraço!!

      Mauricio Magnani Jr respondido:
      30 de janeiro de 2014 às 10:49

      Opa Eu perdi esses arquivos rsrs nem sei mais onde estão kkkkkk foi mals.

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