Explicación de la autenticación de usuarios LDAP | Connect2id

La autenticación de usuarios LDAP es el proceso de validación de una combinación de nombre de usuario y contraseña con un servidor de directorio como MS Active Directory, OpenLDAP uOpenDJ. Los directorios LDAP son una tecnología estándar para almacenar información de usuarios, grupos y permisos y servirla a las aplicaciones de la empresa.

La autenticación de usuarios con un directorio LDAP es un proceso de dos pasos. Este artículo explica la mecánica del mismo y luego cómo configurarlo enLdapAuth.

Paso 1 – Resolver el nombre de usuario a un atributo de entrada de directorio

Las entradas de usuarios en un directorio se identifican por un nombre distinguido (DN) que se asemeja a una estructura tipo ruta que comienza en la raíz del directorio (el segmento más a la derecha):

uid=alice,ou=people,dc=wonderland,dc=net

Para autenticar a un usuario con un directorio LDAP primero hay que obtener su DN así como su contraseña.

Con un formulario de inicio de sesión, la gente suele introducir un identificador simple como su nombre de usuario o dirección de correo electrónico. No se espera que memoricen el DN de su entrada en el directorio. Eso sería poco práctico.

Para resolver este problema entra en juego una resolución de DN. Toma el nombre del usuario o el correo electrónico, y luego ejecuta una búsqueda contra el nombre o los atributos de correo electrónico de todas las entradas de usuario para encontrar el DN de la entrada que coincida. Los directorios emplean una indexación y un almacenamiento en caché muy eficientes, por lo que estas búsquedas suelen ser muy rápidas.

Los atributos del directorio que se buscan se definen en el parámetro searchFilterconfiguration.La configuración predeterminada de LdapAuth busca los atributos UID y email. El marcador de posición%u se sustituye por el identificador de usuario introducido en el formulario de inicio de sesión:

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u))

Si desea buscar sólo el UID, el filtro de búsqueda tendría el siguiente aspecto:

ldapAuth.dnResolution.searchFilter = (uid=%u)

Si quiere buscar el UID, el correo electrónico y el número de empleado, amplíe el filtro a

ldapAuth.dnResolution.searchFilter = (|(uid=%u)(mail=%u)(employeeNumber=%u))

Dos cosas importantes a tener en cuenta al configurar la resolución de DN y crear nuevas entradas de usuario en el directorio:

  • Los atributos -nombre de usuario, correo electrónico, etc- con los que los usuarios inician sesión deben ser únicos. Si se encuentra que dos entradas tienen el mismo atributo de identificación, por ejemplo, el correo electrónico, la autenticación será rápidamente denegada.

  • Asegúrese de que cada usuario que se espera que inicie sesión tiene un atributo definido para el atributo de identificación. Por ejemplo, si los usuarios van a iniciar la sesión con su dirección de correo electrónico, asegúrese de que todas las cuentas tienen un atributo de correo electrónico definido, de lo contrario, la autenticación fallará.

La API web LdapAuth no revela en la respuesta de autenticación la causa del fallo de inicio de sesión, ya sea un nombre de usuario incorrecto, una contraseña incorrecta o ambos. Para solucionar situaciones en las que un usuario no puede iniciar sesióna pesar de haber introducido un nombre de usuario y una contraseña correctos, compruebe los registros del servicio.

Si un inicio de sesión fue rechazado debido a un nombre de usuario incorrecto, una línea como esta aparecerá en el registro:

2012-10-01 10:52:51,460 INFO – user.auth: username=tom authenticated=false message=Invalid username

Si el nombre de usuario se resolvió correctamente, pero la contraseña era incorrecta:

2012-10-01 10:55:05,662 INFO – user.auth: username=alice DN=uid=alice,ou=people,dc=wonderland,dc=net authenticated=false message=Invalid password

Si hemos resuelto correctamente el DN de entrada de directorio del usuario, podemos proceder al siguiente paso – comprobar la contraseña.

Paso 2 – Validar la contraseña del usuario

Las contraseñas se comprueban mediante un comando LDAP llamado bind. Se abre una conexión con el servidor de directorios, luego se envía una solicitud para autenticar la conexión como un usuario particular pasando su DN de entrada y contraseña:

DN: uid=alice,ou=people,dc=wonderland,dc=netpassword: secret

Si las credenciales son correctas, el servidor de directorios devuelve éxito. De lo contrario, devuelve un error LDAP Invalid credentials (código 49).

Cosas importantes a tener en cuenta aquí:

  • La contraseña se comprueba con un atributo en la entrada del usuario dedicado a servir a ese propósito. Si está utilizando un esquema de directorio estándar, este atributo se llama userPassword. En MS Active Directory el nombre de este atributo es unicodePwd. Asegúrese de que todos los usuarios que se espera que inicien sesión tengan un atributo de contraseña definido. De lo contrario, la autenticación fallará.

  • Los valores de las contraseñas suelen tener hash y pueden estar protegidos adicionalmente, por ejemplo, haciéndolos de sólo escritura. Por lo tanto, una simple lectura y comparación de LDAP generalmente no funcionará aquí. El comando bind es siempre el método preferido.

  • Las contraseñas suelen distinguir entre mayúsculas y minúsculas.

De nuevo, recuerde que los archivos de registro son su amigo. Registran los detalles de cada intento de inicio de sesión y se pueden utilizar para la solución rápida de problemas cuando la autenticación no funciona como se espera. Si necesitas más ayuda para configurar LdapAuth ponte en contacto con nosotros.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.