LDAP en Chamilo

Con el éxito creciente de Chamilo, más y más de nuestros usuarios inician en el camino de integrar su portal Chamilo con el sistema de gestión de accesos LDAP, o por lo menos algún tipo de aplicación que tenga compatibilidad con este protocolo.

Y es verdad que Chamilo tiene soporte para diversos métodos de autenticación, aunque muchos están en un estado algo primitivo y requieren algo de configuración manual para funcionar, en particular cuando se tiene varios cientos, miles o decenas de miles de usuarios.

En este artículo, quiero repasar las distintas opciones de implementación de LDAP en Chamilo. Son 4 (+ una variación):

  • 1. Consulta y copia
  • 1+. Consulta, copia y actualización
  • 2. Importación integral diaria
  • 3. Sincronización frenética
  • 4. Activación manual

Antes de empezar con las distintas opciones, es importante definir un poco de vocabulario y luego entender como funciona LDAP de base en Chamilo 1.11 y anteriores.

Vocabulario

En Chamilo usamos términos heredados de código antiguo (LDAP es muy viejo y algunas partes del código de Chamilo tienen una historia total de más de 15 años ya) y que no siempre es lo más adecuado para entender bien el código:

  • “ext”: usamos este término o prefijo cuando hablamos de métodos de autenticación “externos”
  • “auth_source” o “AuthSource”: se usa cuando queremos definir exactamente *cual es* la fuente del dato para el método de autenticación determinado. Puede ser “ldap”, como también puede ser “cas”, “shibboleth”, “openid”, etc.
  • “app/config/”: es la carpeta de configuración básica de Chamilo. Ahí encontramos el archivo de configuración principal, configuration.php, así como el archivo de configuración específico a mecanismos de autenticación: auth.conf.php
  • “LDAP” es un protocolo de comunicación de datos de personas. Funciona por el concepto de “directorio”, el cual tiene la misma lógica que “Active Directory” (o AD) de Microsoft, pues al final son cosas similares y Active Directory fue lanzado por Microsoft como intento de desarrollo propietario del protocolo LDAP ya disponible años antes. Así Active Directory ofrece un “modo de compatibilidad LDAP”, el cual puede usarse para conectarse con Chamilo.
  • “Dominio” es el término usado para definir un grupo o filtro entre todos los usuarios de LDAP. Por ejemplo, porque no queremos que todos los empleados de la organización tengan acceso al sistema Chamilo, sino solo los empleados de administración. En este caso, el dominio sería “administración”

Funcionamiento de Chamilo con LDAP

Quizás lo primero que haya que saber es que la página LDAP dentro de la interfaz web de configuración de Chamilo es solo una guía para la configuración del conector, y que mucha de esta información está vencida, aunque una parte sigue siendo útil.

El funcionamiento de Chamilo con LDAP es el siguiente:

  • el archivo app/config/auth.conf.php tiene un array $extldap_config[] que tiene que contener los datos de acceso al servidor LDAP
  • el archivo app/config/configuration.php tiene una sección LDAP con un array $extAuthSource[‘extldap’] que tiene que ser descomentado
  • cuando se conecte un usuario, Chamilo usa main/inc/local.inc.php para ubicar cual procedimiento de autenticación (según “auth_source” del usuario)
  • una vez determinado el método de autenticación, Chamilo consultará su propia base de datos o el servidor LDAP, según el caso y antes de autorizar el usuario

Con esta información, podemos estudiar el primer modo de implementación de LDAP en Chamilo, y el más sencillo.

1. Consulta y copia

El primer modo, que llamaremos “Consulta y copia” aunque no tenga un nombre propio, es el mecanismo más básico, en el cual Chamilo funcionará tan pronto tengamos configuration.php y auth.conf.php modificados (ver líneas arriba).

Este modo tiene como principal característica que no modificará nada de Chamilo ni consultará nada de LDAP hasta que un usuario que *no existe en Chamilo* intente conectarse a Chamilo, por su formulario de login. En este momento, Chamilo verá que no existe y consultará el directorio LDAP. Si encuentra el usuario ahí, copiará sus datos localmente, en la base de datos de Chamilo, registrando un auth_source (en la base de datos, tabla “user”) igual a “extldap“.
En la próxima conexión, Chamilo ya no tendrá que consultar a LDAP, pues el dato del usuario está guardado localmente.

Este método tiene la ventaja de no depender de LDAP para funcionar. Sin embargo, tiene la desventaja de poder desactualizarse: si un usuario es eliminado de LDAP, Chamilo no lo sabrá y seguirá dándole acceso.

1+. Consulta, copia y actualización

El modo “1+” es el mismo que el 1, pero en el cual agregamos un proceso cronológico que se encargará de consultar LDAP para identificar usuarios que ya fueron eliminados o desactivados. En este caso, los deshabilitará o eliminará de Chamilo.

Por la naturaleza periódica de la necesidad de verificar este directorio, se usa una tarea cronológica (o CRON) que se ejecuta cada noche, por ejemplo, para buscar los usuarios en LDAP y compararlos con la base de usuarios en Chamilo.

Esto se hace (parcialmente por ahora) desde el archivo main/auth/ldap/syncro_users.php, configurándolo adecuadamente y modificando la función vinculada en base a criterios específicos (campos) que tienen que tener un cierto valor para indicar que el usuario se tiene que deshabilitar. Esto requiere un poco de trabajo de customización de los scripts, que Ud o BeezNest puede hacer.

2. Importación integral diaria

Con este método, un script se asegura (previamente al login, y en combinación con el cuando los lapsos de tiempo son más cortos) que todos los usuarios del dominio dado de LDAP estén registrados en Chamilo, y que todos los usuarios deshabilitados en LDAP sean deshabilitados en Chamilo.

A la par con el método 1+, este método usa el script syncro_users.php.

3. Sincronización frenética

Existe un tercer modo, que se usa tan poco que en Chamilo no se encuentra el código que realmente lo pone en la práctica, aunque BeezNest lo haya aplicado para varios clientes. En este caso, no se guardan datos de contraseña en Chamilo, y los datos ingresados siempre se validan con el directorio LDAP, de tal manera que al momento de quedar deshabilitado, el usuario ya no podrá entrar en Chamilo (salvo que haya estado conectado minutos antes de la deshabilitación – en este caso el usuario permanecerá conectado hasta que se desconecte de Chamilo o que su sesión haya vencido.

El problema de esta solución es que cualquier indisponibilidad temporal del servidor LDAP impedirá a los usuarios conectarse a Chamilo. Ya hemos visto este caso ocurrir múltiples veces, así que no creemos que sea conveniente usar este mecanismo, salvo que la disponibilidad de LDAP quede demostrada y ejemplar.

4. Activación manual

En el caso 1, tan pronto como esté configurada la conexión LDAP, se activará también la posibilidad, en el bloque “Usuarios” de la página de administración, enlace “Añadir usuarios LDAP”, la posibilidad de buscar ciertos usuarios en el repositorio LDAP, y así importarlos manualmente a Chamilo.

ldap-admin-block

De esta manera, uno puede anticipar unas horas el proceso de actualización automática, si fuera activado.

Conclusiones

Chamilo tiene soporte para varios mecanismos de autenticación, pero muchos de ellos requieren un poco de configuración manual y muchas pruebas antes de ser puestos en producción. Si no sabe muy bien por donde empezar o tiene dudas, puede contactar a BeezNest para solicitar nuestro soporte a través de nuestro formulario de contacto (ver menú superior).

Comments

Permalink

Hola como estas, quisiera saber si podrías ayudarme a configurar el array $extldap_config. no he podido hacerlo funcionar con nuestr ldap