LDAP em um Session Bean

7 respostas
gcobr

Companheiros

Preciso acessar dados que estão em um servidor LDAP a partir de um Session Bean no JBoss. Alguém sabe se há alguma maneira de fazer lookup do LDAP como se ele fosse um DataSource?

Eu não gostaria de ter que criar o InitialDirContext passando o IP para o servidor LDAP dentro do fonte porque este endereço muda do ambiente de desenvolvimento para o de produção.

Grato,
Gabriel.

7 Respostas

Paulo_Silveira

nunca fiz, mas sei que da para fazer um lookups jndi acabar caindo no ldap, setando um ExternalContext do jboss (que eh um mbean). basta configura-lo para utilizar o BlaBlaLdapContext.

Rafael_Nunes

gcobr:
Eu não gostaria de ter que criar o InitialDirContext passando o IP para o servidor LDAP dentro do fonte porque este endereço muda do ambiente de desenvolvimento para o de produção.

Eu utilizo LDAP aqui para autenticação, e para não deixar a coisa tão ‘hardcode’, crio um arquivo properties na aplicação com esse tipo de informação.

gcobr

Seguindo a idéia do Paulo criei:

$JBOSS_HOME/server/instancia/deploy/ldap-service.xml

<!-- Bind a remote LDAP server --> <mbean code="org.jboss.naming.ExternalContext" name="jboss.jndi:service=ExternalContext,jndiName=meuLDAP"> <attribute name="JndiName">meuLDAP</attribute> <attribute name="Properties"> java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory java.naming.provider.url=ldap://servidor:389/dc=dominio.com.br java.naming.security.principal=cn=Directory Manager,dc=dominio.com.br java.naming.security.authentication=simple java.naming.security.credentials=senha </attribute> <attribute name="InitialContext">javax.naming.directory.InitialDirContext</attribute> </mbean>

Só que ao iniciar o JBoss dá um timeout:

11:26:45,631 WARN [ServiceController] Problem starting service jboss.jndi:service=ExternalContext,jndiName=meuLDAP javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out]

A properties de conexão com o LDAP estão corretas, porque eu vi que se eu colocar dados inválidos, como CN errado para o security.principal, ele diz ‘invalid CN’ …

Que será que houve?

gcobr

Consegui resolver o timeout colocando +:

robson_vs

Rafael Nunes:
gcobr:
Eu não gostaria de ter que criar o InitialDirContext passando o IP para o servidor LDAP dentro do fonte porque este endereço muda do ambiente de desenvolvimento para o de produção.

Eu utilizo LDAP aqui para autenticação, e para não deixar a coisa tão ‘hardcode’, crio um arquivo properties na aplicação com esse tipo de informação.

Gostaria de saber se vc ñ teria um desde arquivo de propriedades para me passar como exemplo tenho q migra a autenticação dos usuario do meu sistema do banco de dados para ldap mais to meio perdido sem saber como fazer minha primeira idéia foi a de criar um arquivo de propriedades para colocar a configuração do ldap e criar uma classe q consumindo as informações deste arquivo faça a autenticação e retorne as informações a minha classe.

Se puder ajudar ficarei muito agradecido.

ozielneto

Bom dia todos,

sugiro usar o LoginModule do JBOSS acessando o LDAP,
dessa forma a autenticação fica transparente para as aplicações daquela instãncia.

Veja referência completa do JBOSS Security Guide:
http://docs.jboss.org/jbossas/jboss4guide/r3/html/ch8.chapter.html

Informações complementares:
http://www.developer.com/security/article.php/3077421

Bom trabalho.

rodrigo_ctba

Olá a todos !!

Algum tempo utilizamos um LoginModule para autenticar no LDAP. No entanto estou tendo dificuldades em fazer este LoginModule acessar um SessionBean (ejb3).

Quando utilizo via via lookup, cria-se a conexão com o meu servidor (jnp://localhost:1099). No entanto quando tendo fazer um cast da conexão para a Interface:

Tenho sempre o erro :

Já tentei colocar a Interface no lib do servidor (JBOSS 4.2), colocar a Interface como Local e até colocar a Interface dentro do LoginModule.

Estou na duvida se eu consigo, via LoginModule acessar um SessionBean ?!

Alguma sugestão ???

Obrigado

Criado 14 de novembro de 2006
Ultima resposta 31 de jul. de 2009
Respostas 7
Participantes 6