LDAP

Autenticando Drupal con Open LDAP

LDAP

Cuando pensamos en implementar soluciones con drupal para empresas tipo intranet, como utilizar OpenAtrium u otro tipo de Sitios en donde tenemos la interacción de muchos usuarios, siempre se nos viene a la mente la posibilidad de autenticar contra un servidor de directorios y no tener que ingresar cientos de usuarios uno por uno en nuestro sitio web, para cuando suceden estos casos los que estamos en el mundo del software libre siempre nos viene a la mente OpenLDAP.
Con LDAP nosotros podemos crear usuarios, con varios atributos los mismos que nos sirve para diferentes necesidades, como el autenticar usuarios de correo, usuarios de sistemas de recaudación y entre otras cosas autenticar nuestros usuarios de intranet, como es el caso para el cual servirá esta publicación.

Requerimientos

Para interactuar nuestra autenticación, solo necesitamos del módulo LDAP, que lo podemos encontrar en http://drupal.org/project/ldap, tengo la idea de que tenemos claro como descargar e instalar este módulo dentro de nuestra instalación Drupal, este viene con varios submodulos por decirlo de alguna manera como(server, user module, autentication, authorization).
Necesitaremos de un árbol de directorio basado en OpenLdap.
Otra de los requerimientos que me sirvió fue el utilizar el administrador de ldap basado en php (phpldapadmin), eso con el fin de identificar los nombres de cada campo que voy a mapear hacia drupal.

Configurando el módulo LDAP

Ahora lo que vamos a hacer es activar los módulos:

  • LDAP Server
  • LDAP User Module
  • LDAP Autentication
  • LDAP Authorization

Una vez que hemos activado estos módulos procederemos a configurarlos bajo el siguiente path: admin/config/people/ldap
En el path anterior encontraremos la configuración de ldap basado en pestañas entre las más importantes son: Server, User, Autentication

Pestañas del módulo

Servers

Desde mi punto de vista, esta es la parte más sensible de la configuración y en la cual pondremos mayor énfasis para que se puedan guiar con facilidad.
A través de esta sección agregaremos una nueva configuración para el server LDAP, para lo cual necesitaremos un nombre del sistema y un nombre de para etiqueta, podemos elegir cualquier texto, para nuestro caso utilizaré “ldapserver” para ambos casos y otros parámetros que enumerare a continuación

  • Tipo de Servidor: OpenLdap
  • LDAP Server: 192.168.10.100 (ip donde se encuentra el servidor ldap)
  • Puerto: 389

También encontraremos casilleros de verificación para “Uses TLS” y “Follow LDAP Referreal” los cuales para este caso dejaremos sin marcar.
Luego procedemos a configurar el el Binding Method, para lo cual podemos elegir la opción:
Anonymous Bind for search, then Bind with Users Credentials: Searches for user dn then uses user's entered credentials to bind to LDAP.
Una de las partes importantes viene “LDAP User to Drupal User Relationship” en donde debemos configurar:
Base DNs for LDAP users, groups, and other entries, en donde proporcionaremos información de nuestro DN que lo tenemos definido en ldap, en mi caso sería:
ou=usuarios, dc=drwsoluciones, dc=net
Entre otros parámetros de esta sección definimos el mapeo de campos como:

  • AuthName attribute en el cual para mi caso es: uid
  • AccountName attribute: lo dejamos en blanco
  • Email attribute: mail

Estos campos de uid y mail son tomados de los que tengan definidos dentro de su directorio LDAP.
Hasta aquí finalizamos con la configuración de la sección del Server.

User

Durante la configuración de usuario elegimos las siguientes configuraciones:

  • Manual Drupal Account Creation and Updates:
  • Reject manual creation of Drupal accounts that conflict with LDAP Accounts. This only applies to accounts created on user logon; Account conflicts can still be generated
  • Basic Provisioning to Drupal Account Settings

    • En esta caso les apareceŕa el nombre de la conexión que se definió en el server, debe escogerla o seleccionarla.
  • Drupal Account Provisioning Events
  • Create or Synch to Drupal user on successful authentication with LDAP credentials. (Requires LDAP Authentication module).
  • Create or Synch to Drupal user anytime a Drupal user account is created or updated. Requires a server with binding method of "Service Account Bind" or "Anonymous
  • Existing Drupal User Account Conflict
  • Associate Drupal account with the LDAP entry. This option is useful for creating accounts and assigning roles before an LDAP user authenticates.
  • Application of Drupal Account settings to LDAP Authenticated Users *
  • Account creation settings at /admin/config/people/accounts/settings do not affect "LDAP Associated" Drupal accounts.
  • Action to perform on Drupal account that no longer have a corresponding LDAP entry
  • Perform no action, but email list of orphaned accounts. (All the other options will send email summaries also.)

Con esto finalizamos nuestra configuración del usuario.

Autentication

  • Allowable Authentications
  • Mixed mode. Drupal authentication is tried first. On failure, LDAP authentication is performed.
  • Authentication LDAP Server Configurations
  • Elegimos la que hemos definido en nuestro servidor en el paso 1

Las otras secciones puede ser “sal al gusto” :)
Y hasta aquí ya tenemos configurado nuestro servidor con conexión a LDAP

Pruebas de conexión

Para realizar las pruebas de conexión, podemos hacerlo a través de la sección de usuario, en donde disponemos de “Test LDAP User Configuration”, en donde podemos proveer un uid de lo que hemos configurado anteriormente dentro del LDAP.
Dentro de la configuración del modo de testeo podemos elegir que ejecute una acción: “Execute Action”, esta puede ser “On create or synch to Drupal user when successfully authenticated with LDAP credentials. (Requires LDAP Authentication module).”

Probando la autenticación

Una vez que hemos pasado la configuración y pruebas, podemos loguearnos contra nuestro servidor LDAP desde el formulario de autenticación de Drupal, si recibimos un mensaje que hubo problema creado el usuario, quizás es porque llenaste el dato dentro de la sección del server: AuthName, borralo y vuelve a intentarlo.

Espero les sea de utilidad, cualquier comentario o sugerencia es bienvenida.

 

Secciones: 

Migrar y respaldar LDAP

AdjuntoTamaño
Icono de texto plano Script para restaurar LDAP1.03 KB

Servicio LDAP
Una buena política de mantenimiento de sistemas en producción, ha sido siempre el mantener una copia de respaldo de nuestros datos y archivos de configuración, en caso de que nuestro servidor sufra algún tipo de problema o inconveniente, tomando este antecedente a través de este post voy a explicar como respaldar nuestros archivos de configuración y datos de LDAP en un servidor montado con Linux Debian.

Respaldo o Backup

Para esta tarea vamos a hacer uso de una copia del archivo slapd.conf que se encuentra bajo el directorio /etc/ldap/ y tambien del comando slapcat, que nos sirve para respaldar los datos de LDAP.
Es necesario mencionar que existen 2 tipos de respaldo de nuestros datos, en FRIO y en CALIENTE, que significa esto que mientras el servicio LDAP este funcionando o corriendo estamos generando un respaldo de nuestros datos en CALIENTE, se recomienda hacer un respaldo en FRIO que significa detener el servicio esto lo hacemos para garantizar la integridad de los datos, para detener el servicio lo podemos hacer con el comando:

/etc/init.d/slapd stop

Ahora vamos a generar un archivo ldif con nuestros datos de la siguiente manera:

slapcat -v -l respaldo-03-10-2010.ldif -f /etc/ldap/slapd.conf

Restaurar o Recuperar datos

Para realizar la restauración de nuestros datos procedemos a realizar las siguientes operaciones:
El  primer paso es detener el servicio LDAP luego copiar nuestro archivo de configuración slapd.conf en el directorio /etc/ldap/ y cambiarle el grupo que debera ser openldap, esto lo podemos hacer mediante el comando.

 chown root.openldap /etc/ldap/slapd.conf

Ahora vamos a proceder a borrar todos los archivos que estan bajo el directorio /var/lib/ldap/ que son los indices y las bases de datos de nuestro servicio, esto lo podemos hacer mediante el uso de rm como se muestra a continuacion:

rm /var/lib/ldap/*

Una vez realizada esta operación procedemos a restaurar desde nuestro archivo de respaldo-03-09-2010.ldif con el comando slapcat como lo veremos en el siguiente ejemplo.

slapadd -v -c -l /dictorio-del-respaldo/respaldo-03-09-2010.ldif -f /etc/ldap/slapd.conf

Realizada esta restauracion de los datos, procedemos a cambiar el propietario y el grupo de los datos que se generan nuevamente en el /var/lib/ldap/ con el siguiente comando:

chown openldap.openldap /var/lib/ldap/*

Luego que hemos cambiado estas propiedades generamos los indices para estas bases de datos con el comando:

slapindex -v

Y finalmente procedemos a iniciar el servicio con /etc/init.d/slapd start y listo tenemos nuestro restauracion integra.

Scritps de utilidad para LDAP

Dentro de nuestro directorio hay usuarios a los cuales queremos cambiarles alguna preferencia en su configuración o entrada en LDAP para lo cual requerimos de la programación de un script para automatizar esta tarea, yo lo he realizado con Perl y otro script bash que me presta algunas funcionalidades para hacer este requerimiento.

Nota: El uso de esta información es de exclusiva responsabilidad de quien la utiliza.

Secciones: