Protocolo LDAP (Lightweight Directory Access Protocol)
Es un conjunto de protocolos abiertos a nivel de aplicación utilizado para acceder a información almacenada centralmente en una red de ordenadores, fuertemente optimizado para operaciones de lectura rápidas y de gran volumen donde las modificaciones no son frecuentes.
Se basa en el estándar X.500 para compartir directorios, simplificado y adaptado al objetivo. El estándar define un directorio como un contenedor de información categorizada y jerarquizada. Para consultar el listado de RFCs relacionadas con el LDAP pincha aquÃ.
Este protocolo utiliza un modelo basado en cliente/servidor, donde el servidor puede redirigir la consulta si no contiene la información solicitada a otro servidor de LDAP. Para realizar operaciones de modificación se comprueba que el usuario tiene el permiso necesario. También soporta conexiones TCP/IP, conexiones seguras (SSL, TSL).
LDAP es utilizado en la mayorÃa de organizaciones debido a que :
- permite consolidar la información de la organización de forma centralizada en un repositorio.
- es accesible desde la mayorÃa de aplicaciones debido a la simplicidad de su API.
- es libre, es decir, no debes pagar por cada conexión o licencia.
- la replicación de datos en servidores distribuidos de LDAP (oficinas) es simple y fácil de gestionar.
Directorio LDAP
Es el repositorio donde están fÃsicamente almacenados los datos en directorios, como hemos visto, categorizados y jerarquizados.
El nombre de los directorios es conocido como Distinguished Name (dn), y en toda estructura de directorios existe una raÃz o directorio base. Podemos formar el dn de varias formas:
- o=”FooBar, Inc.” c=US (formato X.500)
- o=foobar.com (formato internet)
- dc=foobar dc=com (formato DNS)
Los directorios contienen unidades lógicas, Organizational Units (ou), que a su vez pueden estar divididos en otras ou’s. Por ejemplo, clientes, grupos, impresoras, personas…
Finalmente se almacenarán elementos dentro de esta estructura de árbol, diferenciadas por un nombre (Common Name) cn, aunque en personas se suele utilizar también el uid (identificador de usuario, único en toda la organización y no modificable a lo largo del tiempo) para formar el DN.
Con todo, el DN de un elemento dentro de una estructura de árbol quedarÃa (igual que los nombres DNS se lee en orden inverso):
cn=AlejandroPerezMartin00000000T, ou=clientes, dc=foobar, dc=com
uid=perezalej, ou=employee, dc=foobar, dc=com
La manera de almacenar la información en cada registro es mediante pares, consistentes en un atributos y su valor. Por tanto, al definir atributos opcionales no gastan memoria si van vacÃos. Y pueden también almacenar diferentes valores para el mismo atributo, por ejemplo, ingredientes:
dn: cn=ComidaDeAvena Deluxe, ou=recipes, dc=foobar, dc=com
cn: Comida de avena instantánea Deluxe
recipeCuisine: desayuno
recipeIngredient: 1 paquete de comida de avena instantánea
recipeIngredient: 1 tazón de agua
recipeIngredient: 1 pizca de sal
recipeIngredient: 1 tsp de azúcar marrón
recipeIngredient: 1/4 de manzana, de cualquier tipo
Una entrada en un Directorio LDAP
Un ejemplo de una entrada serÃa el siguiente :
dn: uid=fsmith, ou=employees, dc=foobar, dc=com
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: foobarPerson
uid: fsmith
givenname: Fran
sn: Smith
cn: Fran Smith
cn: Frances Smith
telephonenumber: 510-555-1234
roomnumber: 122G
o: Foobar, Inc.
mailRoutingAddress: fsmith@foobar.com
mailhost: mail.foobar.com
userpassword: {crypt}3x1231v76T89N
uidnumber: 1234
gidnumber: 1200
homedirectory: /home/fsmith
loginshell: /usr/local/bin/bash
Se compone como vemos de :
- El DN completo, referenciado por el uid
- Clases de objeto (tantas como se quiera). Definen una serie de atributos obligatorios y otros opcionales.
- Varios CN, para realizar las búsquedas por su nombre más formal o informal por ejemplo.
LDIF (LDAP Data Interchange Format)
Es una representación de entradas LDAP en formato texto ASCII. Se utiliza tanto en consulta como en modificaciones (Altas, Bajas incluidas)
Implementaciones
- Active Directory, de Microsoft.
- eDirectory, de Novell .
- iPlanet, de Netscape.
- OpenLDAP, código libre.