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
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.