• Domingo 22 de Septiembre de 2024, 00:47

Autor Tema:  Autenticacion En Ldap Con Java  (Leído 1726 veces)

raqueldominguez

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Autenticacion En Ldap Con Java
« en: Jueves 14 de Febrero de 2008, 17:30 »
0
Hola a todos,

Tengo un LDAP con entradas de usuario. Necesito comprobar si un usuario (uid) existe y si coincide la password con una recibida por parámetro.

He intentado obtener el atributo userPassword pero creo que no se puede leer, aunque tengo una acl creada para dar permisos de lectura:

access to attr=userpassword
    by self write
    by * read

Por otro lado he intentado a través del siguiente método realizar la autenticacion, pero me da "invalid credentials".

Hashtable env = new Hashtable();
env.put Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, providerURL );
if (ldapSeguro)
     env.put(Context.SECURITY_PROTOCOL, "ssl");
env.put("java.naming.ldap.version", ldapVersion);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, new String("uid=pepe,o=usuarios, dc=orizom,dc=com"));
env.put(Context.SECURITY_CREDENTIALS, clave);
// Si al inicializar estos valores no se levanta una excepción
// entonces la autenticación es OK
DirContext ctx = new InitialDirContext(env);
ctx.close();
// Sólo si todo va bien el resultado es correcto.
resultado=true;

La entrada en ldiff es la siguiente:

dn: uid=pepe,o=usuarios, dc=orizom,dc=com
mailMessageStore: /buzones/o/oabad
sn: ABAD CASTILLO
userPassword:: e2NyeXB0fWFhbndJZkVqVndFLkE=
.
.

Y parece que para crearla en el LDAP la encripta y en el browser aparece algo asi: {CRYPT}268aU2miwExkc

No tengo ningún problema al recuperar la entrada a traves del uid, pero no puedo comprobar el password ni obteniendo el atributo ni tratando de logarme a través de este método.

¿Alguien sabe cuál es la forma correcta de hacerlo? ¿O cómo encripta LDAP? ¿Debo enviar a "env.put(Context.SECURITY_CREDENTIALS, clave)" la clave encriptada o sin encriptar?

Si alguien me pudiera dar alguna pistita, ejemplo, o algo.

Muchas gracias por vuestra ayuda.