Trace: » Integración con LDAP y Active Directory

Integración con LDAP y Active Directory

Introducción

Para empezar, hay que saber que la administración es diferente si utilizamos un servidor LDAP totalmente LDAP compatible o un Active Directory de Microsoft que utiliza la tecnología LDAP sin respetar sus estándares.

Esta documentación se organizará entonces en tres partes:

  • Presentación general de las opciones presentes en GLPI
  • Configuracíon con un servidor LDAP estándar
  • Caso particular de Active Directory (probado con AD 2000 y 2003)

La configuración de las fuentes de autenticación por LDAP son accesibles desde la consola GLPI en la seccion Configuración > Autenticación. Alli debemos activar la lengueta LDAP y podemos proceder a configurar la conexión con un servidor LDAP usando el ícono + (“Agregar”)

Nota: Si no se encuentra ninguna configuración LDAP u obtenemos un mensaje de error en esta zona, se debe a que no hemos instalado el módulo LDAP para PHP. Instalarlo y luego reiniciar el servidor web.

Presentación General

Una vez en la zona Configuración > Autenticación, dentro de LDAP escogemos Agregar un servidor y se nos presentan un conjunto de elementos a configurar, divididos en tres bloques bloques:

Conexión con el servidor LDAP

El bloque superior permite configurar nuestra conexión al servidor LDAP propiamente dicho.

Modos de conexión utilizados

Globalmente, existen dos métodos para realizar la autenticación LDAP, ya que podemos enfrentarnos a varios casos:

  • Disponemos de un directorio plano, es decir que todos los usuarios están situados en el mismo DN (Distinguished Name). La conexión entonces es simple ya que basta con interrogar al servidor con el DN Para verificar si el usuario puede conectarse.
  • Desafortunadamente en algunos casos la busqueda a partir de un nodo determinado del directorio LDAP no es posible ya que las cuentas de usuario no se encuentran localizadas en la misma rama del directorio LDAP. El método implementado para sortear esta dificultad es una autenticación en dos etapas:
  • Buscar la posición del usuario en el directorio de forma anónima o via la utilización de un usuario autorizado a efectuar la búsqueda.
  • Utilizar la posición encontrada (el DN) para verificar que el usuario tiene el derecho de conectarse.
Parámetros de la conexión
  • Host LDAP : la dirección de nuestro servidor LDAP
  • Basedn : es el DN que identifica el nodo inicial de búsqueda dentro del árbol LDAP.
  • rootdn (para las conexiones no anónimas) : usuario autorizado a efectuar una búsqueda en el directorio. Se utiliza si el servidor LDAP (o AD) no permite realizar busquedas usando una conexión anónima.
  • Pass (para las conexiones no anónimas) : clave del usuario anterior.
  • Filtro de conexión : filtro para restringir la búsqueda de nodos correspondientes a usuarios dentro del directorio. Puede utilizarse para aumentar la eficiencia de las consultas LDAP buscando solo entre aquellos objetos del directorio que corresponden a cuentas de usuarios, o también se puede agregar algún atributo a usar en el filtro de búsqueda de modo que solamente un conjunto restringido de personas en el directorio puedan conectarse a GLPI.

ATENCIÓN: el rootdn y el basedn deben ser escritos sin espacios luego de las comas.

Ejemplo con rootdn:

cn=Admin, ou=users, dc=mycompany incorrecto
cn=Admin,ou=users,dc=mycompany correcto

Pertenencia a grupos

En este bloque se configura como se identifican los grupos y la pertenencia de los usuarios a los mismos a partir de los datos en el servidor LDAP.

Ligadura GLPI/LDAP

En el bloque inferior se establece la correpondencia entre los atributos definidos en LDAP (usar siempre minusculas) con los correspondientes atributos de los usuarios GLPI.

Una vez identificado el usuario, los campos LDAP configurados a la derecha van a ser utilizados para llenar de manera automática los campos GLPI correspondientes.

Los valores por defecto corresponden a atributos estándar utilizados por lo general en un servidor LDAP estándar (no un Active Directory). Según el esquema utilizado para definir usuarios en nuestro LDAP hará falta ajustar estos valores para recuperar automáticamente el nombre, apellido, dirección electrónica, etc de los usuarios importados a GLPI .

A continuación como ejemplo se listan algunos valores tipicos, aunque según el esquema que use nuestro directorio LDAP estos pueden variar:

Campo Significado LDAP standard Active Directory
login name Nombre de usuario uid samaccountname
email Dirección de correo mail
location Ubicación del usuario physicaldeliveryofficename
phone Número de teléfono telephonenumber
realname Apellido sn
firstname Nombre de pila givenname

En breve, lo más simple es que naveguemos en nuestro LDAP o nuestro AD para determinar los campos que correspondan a estos datos ya que pueden variar grandemente según el sistema que utilicemos.

Caso de un directorio LDAP clásico

Los parámetros a ingresar son muy simples, por ejemplo:

  • host : ldap.midominio.com
  • basedn : dc=midominio,dc=com

Y con esto debe bastar, si se permite la búsqueda anónima.

En el caso contrario, y si no todos los usuarios no están ubicados dentro del mismo DN, hará falta especificar el DN de un usuario autorizado y su clave: rootdn/Pass

También podemos imponer una condición para la búsqueda. Por ejemplo, en la Universidad de Poitiers, se mantienen campos para especificar a qué entidad está asignado el personal. Si se desea restringir a ciertas entidades, la condición es:

  • (upempaffectation=500400)
  • o, más complicado: (| (upempaffectation=500400)(upempaffectation=500200))

Recuperación de los grupos del usuario desde el directorio LDAP

GLPI es capaz de recuperar el o los grupos a los que pertenece un usuario a partir de un atributo de la entrada del usuario.

Para lograrlo, es necesario ejecutar las etapas siguientes:

  • En la interfaz de administración (Configuración/Autenticación Externa) tipear en el campo grupo el nombre del atributo LDAP que indicará a qué grupo/s pertenece un usuario. ¡En minúsculas!

Desde la version 0.68.1, es posible consultar la pertenencia de un usuario a un grupo de tres maneras diferentes:

  • leyendo un atributo en la entrada del usuario (parámetro “Atributo del usuario que indica sus grupos” en la interfaz)
  • leyendo un atributo en las entradas de grupos (parámetro “Atributo de los grupos conteniendo los usuarios” en la interfaz)
  • buscando al mismo tiempo por los dos métodos anteriores.
  • En Administración→Grupos creamos nuestros grupos.

Para cada grupo, ingresamos:

  • su nombre GLPI (campo nombre): será utilizado en toda la interfaz GLPI.
  • el campo LDAP correspondiente: será normalmente pre-llenado.
  • el valor LDAP: indicando el DN del grupo tal como figurará en la entrada del usuario. (sin espacios entre las comas).

Desde la versión 0.68.1

  • el dn del grupo: indica el DN del grupo en el cual se buscará la presencia del usuario. Si utilizamos la búsqueda por grupo, no es necesario proveer el campo LDAP ni su valor.

Nos reconectamos como usuario. Este, si no está presente en GLPI, será agregado al sistema, y la lista de los grupos a los cuales pertenece será actualizada para tener en cuenta los valores presentes en el directorio.

Toda modificación de los grupos de un usuario en LDAP implicará la actualización de los grupos en GLPI a la próxima conexión del usuario a GLPI.

Caso de un Active Directory

La utilización de AD 2k y 2k3 ha sido probada exitosamente.

Aquí las cosas se complican (un poco). Debemos especificar como siempre nuestro servidor y el DN de base para la consulta:

En efecto, parece que es necesario especificar al menos una OU (Unidad Organizativa) para que funcionen el agregado de usuarios con el enlace “desde un origen externo” desde la lista de usuarios y la consulta de pertenencia de un usuario a un grupo a partir de los grupos.

Siendo imposibles las consultas anónimas, debemos obligatoriamente especificar un usuario autorizado (generalmente un usuario lambda puede hacer todo sobre un Active Directory). Entonces se deberá especificar su rootdn (por el CN, que es el campo utilizado para la autenticación) y su clave:

  • rootdn: CN=Nombre Apellido,OU=INVITADOS,DC=midominio,DC=com

(el OU permite especificar el grupo de pertenencia del usuario)

  • Pass: la clave de este usuario

Asimismo se recomienda fuertemente imponer una condición para no permitir la conexión sino a personas físicas (sí, también hay máquinas en el AD). En breve, el filtro que podemos utilizar es el siguiente: (&(objectClass=user)(objectCategory=person))

Tips : Si encontramos alguna dificultad, el utilitario 'adsiedit' nos permitirá ver la arquitectura de nuestro AD con la totalidad de la información para cada objeto en LDAP. Esta herramienta se encuentra junto con los support tools/herramientas suplementarias disponibles en nuestro CD de instalación.

Ejemplo de configuración con AD:

LDAP configuration

Host LDAP: ldap://micontroladordedominio.midominio.com

LDAP Port: 389

Basedn: OU=Sectores,DC=midominio,DC=com (respetar las mayúsculas/minúsculas de ADSI Edit)

rootdn: una cuenta con derecho de únicamente leer el AD, del estilo CN=Juan Perez,OU=Usuarios,OU=Sectores,DC=midominio,DC=com (respetar las mayúsculas/minúsculas de ADSI Edit)

Pass (para las conexiones no anónimas): * (su clave)

Filtro de conexión: (objectClass=user) (con los paréntesis)

Campo de login: samaccountname (en minúsculas)

Pertenenencia a grupos

Tipo de consulta: En los usuarios

Atributo de usuario indicando sus grupos: memberof (en minúsculas)

realname: sn (en minúsculas)

firstname: givenname (en minúsculas)

location: physicaldeliveryofficename (en minúsculas)

email: mail (en minúsculas)

phone: telephonenumber (en minúsculas)

phone2: homephone (en minúsculas)

mobile: mobile (en minúsculas)