Este artículo explica cómo implementar la autenticación de usuarios de un sitio Moodle a través de un servidor LDAP (Lightweight Directory Access Protocol). Anteriormente expliqué cómo montar un servidor LDAP en Linux y cómo instalar Fusion Directory, una excelente herramienta para la gestión de un directorio desde cualquier navegador Web. El motivo de contar con un directorio LDAP era el de autenticar usuarios de un sitio Moodle, entre otras cosas (el objetivo a largo plazo sería centralizar la autenticación de todos los usuarios de la organización).

Antes de comenzar se asume que se cuenta con un servidor LDAP funcionando y aceptando peticiones en los puertos 389 ("ldap") y opcionalmente 636 ("ldaps"). Por otro lado se cuenta con una instalación de Moodle sobre un servidor Web con soporte para la extensión LDAP de PHP (cargada y activada).

Con estos requisitos, la configuración de la autenticación de usuarios de Moodle a través de LDAP es simple.

Ingresar al sitio con un usuario administrador y acceder a la pestaña "Plugins" desde el menú "Site Administration". Bajar hasta la sección "Authentication" y acceder a "Manage authentication":

Habilitar el plugin "LDAP server":

Una vez activado acceder a su configuración desde "Settings":

El primer paso consiste en configurar el acceso al servidor LDAP (URL):

Luego se deben ingresar las credenciales de un usuario válido con el cual conectarse al servidor LDAP, en forma de DN (Distinguished Name) y contraseña:

El siguiente paso consiste en configurar el modo de acceso y recuperación de datos de usuarios LDAP:

En este caso, los usuarios pertenecen a la clase "inetOrgPerson" (RFC2798). Moodle sólo soporta cuentas Unix (RFC2307) y Windows (Active Directory y Samba) entre otras. Sin embargo el campo "Object class" permite especificar una clase de usuarios personalizada. Por ende se puede seleccionar cualquier opción en el primer menú desplegable.

Especificar correctamente el contexto donde se encuentran los usuarios de Moodle dentro del LDAP y el atributo que corresponde al usuario de Moodle (en el ejemplo "uid", atributo parte de la clase inetOrgPerson).

A continuación configurar el formato para almacenar contraseñas:

El siguiente paso consiste en configurar el mapeo de roles de Moodle a grupos de LDAP. Antes de ello es necesario crear (en caso que aún no existan) un grupo LDAP para cada rol en Moodle. En este caso desde Fusion Directory:

La cantidad de roles depende de cada instalación de Moodle. Contando con todos los grupos necesarios, configurar el mapeo utilizando los correspondientes DN:

La siguiente configuración es una de las más IMPORTANTES: definir el método para sincronizar cuentas. Si se configura de manera incorrecta es posible perder todas las cuentas de usuario existentes. Esto dependerá de cada instalación, por supuesto.

En esta situación, la instalación de Moodle posee un gran número de usuarios internos, y se desea agregar nuevos usuarios desde LDAP. Por lo tanto, al momento de sincronizar se mantienen los usuarios internos y no se sincronizan las cuentas suspendidas. Si se configura en "Full delete internal", un usuario no presente en el LDAP es borrado de Moodle. Tener mucho cuidado con esta configuración y ser conservadores al respecto.

Por supuesto es necesario crear un backup de los datos de Moodle antes de comenzar la sincronización (más adelante se configura la sincronización con LDAP).

La siguiente sección de la configuración se utiliza para especificar cómo se mapean los campos de usuario de Moodle a atributos de LDAP, y cómo se sincronizan con LDAP:

Esta configuración es muy importante para recuperar correctamente los datos de usuarios LDAP y dependerá de la clase utilizada por cada servidor LDAP. Por ejemplo el campo "Surname" corresponde con el atributo "sn" de la clase "inetOrgPerson":

Finalizada la configuración de la autenticación con LDAP, es posible verificar la conexión contra el servidor LDAP. Volver a la página de gestión de autenticación ("Site Administration > Plugins > Authentication > Manage authentication") y acceder a "Test settings":

La conexión funciona correctamente:

En caso de errores, recurrir al log de Moodle ("Site Administration > Reports > Logs").

El último paso consiste en configurar la tarea programada de Moodle que sincroniza los usuarios contra el servidor LDAP. Acceder al menú "Site Administration > Server > Scheduled tasks":

Acceder al engranaje en la tarea "LDAP users sync job":

Esta tarea es la responsable de sincronizar la base de usuarios de Moodle contra el servidor LDAP. Típicamente debe correr una vez al día en un horario de baja carga para el servidor.

IMPORTANTE: Antes de ejecutar esta tarea, hacer una copia de seguridad de todos los datos de Moodle.

Guardar los cambios y seleccionar "Run now" para correr la tarea:

Se incorporan 3 usuarios del LDAP con éxito. A partir de este momento es posible autenticar en Moodle utilizando el nombre de usuario y clave de LDAP de cualquiera de ellos:

Por ejemplo, se accede con el usuario "estudianto" (uid=estudianto,ou=people,dc=***,dc=***) y su contraseña en LDAP:

Notar que tanto nombre como apellido ha sido correctamente recuperados desde el objeto LDAP, gracias al mapeo definido durante la configuración.

Referencias


Tal vez pueda interesarte


Compartí este artículo