JNDIRealm e integração com Active Directory  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
flaviomreis
Debugger
[Avatar]
Membro desde: 04/07/2006 09:20:35
Mensagens: 56
Offline

Bom dia galera!

Gostaria que o tomcat fizesse integração com o Active Directory e permitisse acesso à minha aplicação somente a usuários de um determinado Grupo do AD. Para tanto, tenho a seguinte configuração que não tenho a mínima idéia se funciona, pois não consegui criar log das tentativas de acesso, em meu server.xml:


Já tentei várias outras configurações sem sucesso também, o problema é que sempre é solicitado o usuário e senha, ou seja, não consigo de forma alguma autenticar em minha aplicação, onde no web.xml tem:


Alguém tem alguma idéia de como fazer isto?

Obrigado.

Flávio Menezes dos Reis
Bacharel em Sistemas de Informação
Terra de Areia - RS
[MSN] [ICQ]
angelobuild
HelloWorld
[Avatar]

Membro desde: 11/04/2007 12:11:09
Mensagens: 11
Localização: Brasília-DF
Offline

Flavio eu estou tentando fazer a configuração no meu server xml, mas não tá dando certo, já que o seu pede para tudo eu gostaria que o meu pelo menos pedisse a autenticação e não tá funcionando poderia me auxiliar.

tallk: angelobuild@gmail.com

Desde já agradesço pela atenção.

Att,
Ângelo Santos.

Ângelo Santos.
[MSN]
flaviomreis
Debugger
[Avatar]
Membro desde: 04/07/2006 09:20:35
Mensagens: 56
Offline

angelobuild wrote:Flavio eu estou tentando fazer a configuração no meu server xml, mas não tá dando certo, já que o seu pede para tudo eu gostaria que o meu pelo menos pedisse a autenticação e não tá funcionando poderia me auxiliar.

tallk: angelobuild@gmail.com

Desde já agradesço pela atenção.

Att,
Ângelo Santos.


Cola aqui o teu server.xml e o teu web.xml

Att,

Flávio Menezes dos Reis
Bacharel em Sistemas de Informação
Terra de Areia - RS
[MSN] [ICQ]
angelobuild
HelloWorld
[Avatar]

Membro desde: 11/04/2007 12:11:09
Mensagens: 11
Localização: Brasília-DF
Offline

Eu consegui, mas tá dando o seguinte erro:

SEVERE: Exception performing authentication
javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name 'dc=sistema,dc=org,dc=br'
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at javax.naming.directory.InitialDirContext.search(Unknown Source)
at org.apache.catalina.realm.JNDIRealm.getUserBySearch(JNDIRealm.java:1067)
at org.apache.catalina.realm.JNDIRealm.getUser(JNDIRealm.java:975)
at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:924)
at org.apache.catalina.realm.JNDIRealm.authenticate(JNDIRealm.java:810)
at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:181)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:10
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:52
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)



segue a configuração do JNDIRealm

<Realm alternateURL="ldap://ensi-dc01.sistema.org.br:389"
className="org.apache.catalina.realm.JNDIRealm"
connectionName="meuUser" connectionPassword="minhaSenha"
contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
connectionURL="ldap://ensi-dc01.sistema.org.br:389"
userBase="dc=sistema,dc=org,dc=br"
userSubtree="true"
userSearch="(&(objectClass=user)(userPrincipalName={0}))"
userRoleName="memberOf"
roleBase="ou=minhaOU,dc=sistema,dc=org,dc=br"
roleSubtree="true"
roleName="cn"
roleSearch="(&(objectClass=group)(uniqueMember={0}))"
authentication="simple"
validate="true"/>

This message was edited 1 time. Last update was at 17/04/2009 16:01:08


Ângelo Santos.
[MSN]
angelobuild
HelloWorld
[Avatar]

Membro desde: 11/04/2007 12:11:09
Mensagens: 11
Localização: Brasília-DF
Offline

JNDIRealm

<Realm alternateURL="ldap://ensi-dc01.sistema.org.br:3268"
className="org.apache.catalina.realm.JNDIRealm"
connectionName="meuUsuario" connectionPassword="minhaSenha"
contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
connectionURL="ldap://ensi-dc01.sistema.org.br:3268"
userBase="ou=minhaOU,dc=sistema,dc=org,dc=br"
userSubtree="true"
userSearch="(&(objectClass=user)(userPrincipalName={0}))"
userRoleName="memberOf"
roleBase="ou=minhaOU,dc=sistema,dc=org,dc=br"
roleSubtree="true"
roleName="cn"
roleSearch="(&(objectClass=group)(uniqueMember={0}))"
authentication="simple"
validate="true"/>


web.xml

<security-constraint>
<web-resource-collection>
<web-resource-name>HTMLManger and Manager command</web-resource-name>
<url-pattern>/index.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<!-- NOTE: This role is not present in the default users file -->
<role-name>tomcat</role-name>
</auth-constraint>
</security-constraint>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>
>

<!-- Define the Login Configuration for this Application -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Tomcat Manager Application</realm-name>
</login-config>


Ângelo Santos.
[MSN]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

Boa tarde galera!

Qual o status desta configuração pra vocês? Conseguiram fazer a autenticação?
Estou precisando deste requisito em um sistema, e gostaria de exemplos. Se pudessem ajudar eu agradeceria.
Preciso fazer com que o Tomcat façaa autenticação em um AD e em seguida fazer requisições a um Servidor EJB em outra máquina, passando os dados do Subject.

Qualquer ajuda ébem vinda.

Att,
Luiz Gustavo

Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
angelobuild
HelloWorld
[Avatar]

Membro desde: 11/04/2007 12:11:09
Mensagens: 11
Localização: Brasília-DF
Offline

Fala Luiz Gustavo, consegui implementar a nível de aplicação, não tentei novamente a nível de tomcat (Web-Container), mas podemos tentar fazer juntos ae, acho que agora vai dar certo na epoca eu não possuia muitos conhecimentos sobre o assunto.

Descreve mais sobre o ambiente que você quer implementar isso, a implementação via Web-Container é sua única opção de solução ou você poderia outras opções, como por exemplo a nível de aplicação?

This message was edited 1 time. Last update was at 20/03/2010 03:30:46


Ângelo Santos.
[MSN]
Luiz_Gustavo
Virtual Machine Man
[Avatar]

Membro desde: 30/04/2005 12:55:11
Mensagens: 518
Localização: Assis
Offline

Opa, tudo bem Ângelo?
Então, o ambiente é o seguinte:

Aplicação EJB no GlassFish em um servidor.
Aplicação JSF no Tomcat em outro servidor.
Active Directory já existente, com as credenciais dos usuários.

Preciso autenticar os usuários primeiramente no Tomcat, para já implementar a segurança declarativa para as páginas e menus que os usuários poderão acessar.
Em seguida preciso manter o mesmo nível de segurança nas requisições EJB. Idealmente preciso ter o Subject do usuário logado na aplicação EJB, para fazer a segurança dos componentes.
Além disso, a aplicação é multicliente, e a mesma aplicação EJB precisa acessar datasources diferentes, a depender do usuário que está acessando.

Tudo está me levando a utilizar JAAS para fazer esta autenticação, implementando um LoginModule específico para autenticar no AD. Na verdade estou tentando implementar um tutorial que encontrei, que usa o CAS (http://www.ibm.com/developerworks/web/library/wa-singlesign/).

Vou continuar dando uma olhada para ver se isso vai antender à minha necessidade.

Se quiser fazer um trabalho conjunto, para trocarmos informações, seria muito bom.

Abraço!

This message was edited 1 time. Last update was at 20/03/2010 08:26:41


Analista e Desenvolvedor de Sistemas
http://luizgustavoss.blogspot.com/
http://luizgustavoss.wordpress.com/
http://www.linkedin.com/in/luizgustavoss
Procurando uma especialização em Java, SOA e Android? Conheça a TNT Educacional

[Email] [WWW]
crmoreira
HelloWorld

Membro desde: 27/06/2011 19:22:05
Mensagens: 10
Offline

Pessoal,

Preciso resolver o mesmo problema, alguma solução já foi implementada?

Abs,

Carlos
 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team