
He leído bastante información sobre LDAP pero hay algo que no entiendo.
Supongamos que tengo una aplicación J2EE que es capaz de autenticar usuarios locales o usuarios LDAP (alternativas mutuamente excluyentes). Después de especificar la dirección IP del servidor LDAP, el DN base y el DN de conexión y la contraseña en la aplicación, ahora mis usuarios pueden iniciar sesión usando su información LDAP.
Ahora, supongamos que "miusuario" con la contraseña "micontraseña" inicia sesión en la aplicación. ¿Qué de lo siguiente ocurre?
La aplicación recibe la solicitud de inicio de sesión, luego se vincula a LDAP usando sus propias credenciales y luego busca la entrada de "miusuario" y compara "micontraseña" con la contraseña almacenada en el directorio LDAP para la entrada coincidente, luego permite o rechaza la acceso.
La aplicación recibe la solicitud de inicio de sesión, luego pasa las credenciales "miusuario" y "micontraseña" a LDAP (vincula DN y contraseña) y luego, según la respuesta recibida para la operación de vinculación, ¿permite o rechaza al usuario?
¿Cómo funciona realmente?
Respuesta1
Según tengo entendido (y no soy un experto en estos temas) es más bien 1 que 2, pero no exactamente. La aplicación recibe la solicitud de inicio de sesión. Se vincula a LDAP utilizando sus propias credenciales y la contraseña se transmite de forma clara (razón por la cual LDAPS, o LDAP que escala a través de TLS, es una buena idea). Estas credenciales deben tener privilegios suficientes para que el servidor LDAP permita una búsqueda de varios parámetros almacenados relacionados con la myuser
cuenta de, incluida la contraseña de usuario almacenada en hash.
Luego, la aplicación realiza un hash mypassword
, tal como lo presenta el usuario, y lo compara con el hash devuelto por LDAP. Si coinciden, sabrá que las credenciales presentadas son buenas y myuser estará autenticado; si no, entonces no.