pcaeiro
Dezembro 3, 2008, 9:59am
#1
Viva,
Estou a tentar configurar a autenticação de uma aplicação utilizando o JBoss + Seam 2.1 e o LDAP, para isso segui o post indicado:
http://blog.furiousbob.com/2008/08/28/identity-management-de-verdade-com-novo-seam-21-beta/
No entanto como o meu LDAP já existia e é bastante extenso (nº utilizadores) não pude implementar o atributo “member” tal como é descrito no post.
O meu components.xml
<security:ldap-identity-store name="ldapIdentityStore"
server-address="sedna.cmarl.pt"
server-port="389"
user-DN-prefix="uid="
user-DN-suffix=",ou=Users,dc=cmarl,dc=pt"
user-context-DN="ou=Users,dc=cmarl,dc=pt"
user-password-attribute="userPassword"
bind-DN="cn=Manager,dc=cmarl,dc=pt"
bind-credentials="secret"
user-object-classes="person,uidObject"/>
<security:identity-manager identity-store="#{ldapIdentityStore}"/>
quando ponho para correr a autenticação falha e devolve o seguinte erro:
12:55:08,755 ERROR [SeamLoginModule] Error invoking login method
org.jboss.seam.security.management.IdentityManagementException: Authentication error
at org.jboss.seam.security.management.LdapIdentityStore.authenticate(LdapIdentityStore.java:441)
...
at java.lang.Thread.run(Unknown Source)
Caused by: javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
.....
at org.jboss.seam.security.management.LdapIdentityStore.authenticate(LdapIdentityStore.java:420)
... 77 more
Este erro ocorre sempre seja qual for a bind-credentials esteja ela correcta ou errada, poderá ser um problema de encriptação?? :?
Se alguém tiver conhecimentos nesta área que possa ajudar…
Obrigado
Rocker
Dezembro 11, 2008, 8:31am
#2
pcaeiro,
Estou tentando implementar um webservice que faça autenticação no LDAP usando o Seam Framework, porém ainda não consegui implementá-lo pois não achei exemplos que me ajudassem.
Como você implementou a classe de autenticação? O que precisou configurar?
Att,
Eduardo
Cara,
O erro tá sendo o seguinte, para fazer autenticação em ldap você tem que acessar com uma conta de administrador veja seu erro e leia:
Caused by: javax.naming.AuthenticationException: [LDAP: error code 49 - Invalid Credentials]
credencial inválida, porque ? claro: você não especificou a conta de um administrador do ldap.
<security:ldap-identity-store name="ldapIdentityStore"
server-address="sedna.cmarl.pt"
server-port="389"
user-DN-prefix="uid="
user-DN-suffix=",ou=Users,dc=cmarl,dc=pt"
user-context-DN="ou=Users,dc=cmarl,dc=pt"
user-password-attribute="[b]Aqui vai a senha do administrador[/b]"
bind-DN="cn=Manager,dc=cmarl,dc=pt"
bind-credentials="secret"
user-object-classes="person,uidObject"/>
<security:identity-manager identity-store="#{ldapIdentityStore}"/>
Veja na documentação onde colocar o usuário que não me lembro, mas a resposta é esta.
pcaeiro
Dezembro 12, 2008, 5:59am
#4
Viva Eduardo,
basta seguir o link que coloquei ai no meu primeiro post está tudo aí.
quanto ao à classe de autenticação não é necessária pois o seam faz tudo por você basta apenas desactivar a chamada do método authenticate no components.xml
<!-- <security:identity authenticate-method="#{authenticator.authenticate}"
remember-me="true"/> -->
<security:ldap-identity-store name="ldapIdentityStore"
server-address="sedna.cmarl.pt"
server-port="389"
bind-DN="cn=Manager,dc=cmarl,dc=pt"
bind-credentials="secret"
user-DN-prefix="uid="
user-DN-suffix=",ou=Users,dc=cmarl,dc=pt"
user-context-DN="ou=Users,dc=cmarl,dc=pt"
user-password-attribute="userPassword"
user-role-attribute="memberUid"
role-DN-prefix="cn="
role-DN-suffix=",ou=Groups,dc=cmarl,dc=pt"
role-context-DN="ou=Groups,dc=cmarl,dc=pt"
/>
<security:identity-manager identity-store="#{ldapIdentityStore}"/>
atenção que a primeira linha está desactivada
depois é só por a andar…
Vou aproveita e responder ao Carlos também,
na verdade o meu erro aqui tem a ver com o
user-DN-prefix="uid="
pois o Ldap que estou a usar foi construído definindo o cn como o campo que identifica cada utilizador e não o uid como eu pretendia por essa razão ele não reconhecia os utilizadores.
assim tenho várias hipóteses ou utilizo o cn em vez do uid para autenticação o que não é muito recomendável, ou altero o Ldap para que cada user se identifique através do uid ou ainda contorno essa situação através de código, no entanto penso que vou alterar o Ldap até porque este assim ficará mais arrumado.
No entanto muito obrigado pela sua resposta,
Paulo