PROTOCOLO LDAP
El protocolo LDAP es muy utilizado actualmente para ejercer las funciones propias de un
directorio activo en el que se gestionarán las credenciales y permisos de los trabajadores
y estaciones de trabajo en redes LAN corporativas en conexiones cliente/servidor.
En este documento veremos de forma resumida en qué consiste este protocolo y
correspondientes herramientas junto con la estructura y términos más utilizados en él.
Contenido
Introducción............................................................................................................................... 2
Funcionamiento de LDAP ........................................................................................................... 3
Cómo se almacena la información en LDAP ............................................................................ 3
Cómo se accede a la información en LDAP ............................................................................. 4
Estructura de una URL de acceso en LDAP ............................................................................. 5
Herramientas más importantes que utilizan el protocolo LDAP.................................................. 6
PROTOCOLO LDAP
Introducción
LDAP son las siglas de Protocolo Ligero de Acceso a Directorio, o en inglés Lightweight
Directory Access Protocol). Se trata de un conjunto de protocolos de licencia abierta que
son utilizados para acceder a la información que está almacenada de forma centralizada
en una red. Este protocolo se utiliza a nivel de aplicación para acceder a los servicios de
directorio remoto.
Un directorio remoto es un conjunto de objetos que están organizados de forma jerárquica
tales como nombre, claves, direcciones, etc. Estos objetos estarán disponibles por una
serie de clientes conectados mediante una red, normalmente interna o LAN, y
proporcionarán las identidades y permisos para esos usuarios que los utilicen.
LDAP está basado en el protocolo X.500 para compartir directorios, y contiene esta
información de forma jerárquica y mediante categorías para proporcionarnos una
estructura intuitiva desde el punto de vista de la gestión por parte de los administradores.
Es, por así decirlo, una guía telefónica, pero con más atributos y credenciales. En este
caso utilizamos el término directorio para referirnos a la organización de estos objetos.
De forma general, estos directorios se utilizan básicamente para contener información
virtual de usuarios, para que otros usuarios accedan y dispongan de información acerca
de los contactos que están aquí almacenados. Además, es capaz de comunicarse de forma
remota con otros directorios LDAP situados en servidores que pueden estar en el otro
lado del mundo para acceder a la información disponible. De esta forma se crea una base
de datos de información descentralizada y completamente accesible.
La versión actual se denomina LDAPv3 y se encuentra definida en una hoja de
documentación RFC 4511 accesible de forma pública.
PROTOCOLO LDAP
Funcionamiento de LDAP
LDAP es un protocolo basado en la conexión entre cliente y servidor. En el servidor LDAP
se almacenarán los datos relativos al directorio, el cual podrá usar una amplia variedad
de bases de datos para este almacenamiento, llegando a ser de grandes dimensiones.
Cuando el cliente LDAP se conecta con el servidor, podrá realizar dos acciones básicas,
bien consultar y obtener información del directorio, o modificarla.
Si un cliente consulta la información el servidor LDAP puede conectarla
directamente si tienen un directorio alojado en él, o bien redirigir la solicitud hasta
otro servidor que efectivamente tenga esta información. Este podrá ser local, o
remoto.
Si un cliente quiere modificar la información del directorio, el servidor comprobará
si el usuario que está accediendo a este directorio tiene permisos de
administrador o no. Entonces, la información y gestión de un directorio LDAP se
podrá hacer de forma remota.
Cómo se almacena la información en LDAP
El sistema está basado en la siguiente estructura:
Entradas: son colecciones de atributos con un Nombre Distinguido (DN). Este
nombre se utiliza para dar un identificador único e irrepetible a una entrada del
directorio. Una entrada puede ser el nombre de una organización y de ella
colgarán unos atributos. También una persona puede ser una entrada.
PROTOCOLO LDAP
Atributos: poseen un tipo identificador y los correspondientes valores. Los tipos
se utilizan para identificar los nombres de atributos, por ejemplo “mail”, “name”,
“jpegPhoto”, etc. Algunos de los atributos que pertenecen a una entrada son
obligatorios y otros opcionales.
LDIF: el Formato de Intercambio de Datos de LDAP es la representación en texto
ASCII de las entradas LDAP. Este debe ser el formato de los archivos que se utilicen
para importar información a un directorio LDAP. Cuando se escriba una línea en
blanco, significará el final de una entrada.
[<id>]
dn: <distinguished name>
<attrtype>: <attrvalue>
<attrtype>: <attrvalue>
<attrtype>: <attrvalue>
Árboles: organización jerárquica de entradas. Por ejemplo, en una estructura de árbol
podremos encontrar un país en la parte superior y como principal, y dentro de éste
tendremos los distintos estados que conforma el país. Dentro de cada estado podremos
enumerar los distritos, ciudadanos y direcciones de donde viven, y así sucesivamente.
Si aplicáramos esto a Internet y la informática, podríamos organizar un directorio LDAP
mediante un nombre de dominio que haría las funciones de árbol y de él colgarían los
distintos departamentos o unidades organizativas de una empresa, empleados etc. Y es
precisamente de esta forma como actualmente se forma los directorios, gracias al uso de
un servicio DNS, podremos asociar una dirección IP con un directorio LDAP para poder
acceder a él mediante el nombre de dominio.
Cómo se accede a la información en LDAP
PROTOCOLO LDAP
Un ejemplo de entrada de un directorio de LDAP puede ser:
dn: cn=Iván Barcia,dc=ufv,dc=es
cn: Iván Barcia
givenName: Iván
sn: Barcia
telephoneNumber: +34 666 777 888
mail: [Link]@[Link]
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
dn (domain name): nombre de entrada, pero no forma parte de la propia entrada.
dc: componente de dominio para identificar las partes del dominio donde se
almacena el directorio LDAP.
cn (common name): nombre de atributo para identificar el nombre de usuario,
por ejemplo
sn (surname): apellido del usuario
telephoneNumbre, mail…: identificar de nombre para el atributo teléfono y correo
electrónico.
objectClass: distintas entradas para definir las propiedades de los atributos
Un servidor LDAP, además de almacenar un árbol, puede contener subárboles que
incluyen entradas específicas del dominio principal. Además, puede almacenar
referencias a otros servidores de directorio para dividir el contenido si es necesario.
Estructura de una URL de acceso en LDAP
Al efectuar conexiones remotas a un servidor LDAP, necesitaremos del uso de direcciones
URL para obtener información de éste. La estructura básica
ldap://servidor:puerto/DN?atributos?ambito?filtros?extensiones
servidor o host: es la dirección IP o nombre de dominio del servidor LDAP
puerto: el puerto de conexión del servidor, por defecto será el 389
DN: nombre distinguido para usar en la búsqueda
Atributos: es una lista de campos a devolver separados por comas
Ámbito o scope: es el ámbito de la búsqueda
Filtros: para filtra la búsqueda según el identificador del objeto, por ejemplo.
Extensiones: serán las cadenas de caracteres extensiones de la URL en LDAP.
Por ejemplo:
ldap://[Link]/cn=Iván%20Barcia,dc=ufv,cd=es
Estamos buscando todos los usuarios que haya en la entrada de Iván Barcia en [Link].
PROTOCOLO LDAP
Además de esta notación, también tendremos una versión de LADP con certificado de
seguridad SSL, cuyo identificador para la URL será “ldaps:”.
Herramientas más importantes que utilizan el protocolo
LDAP
En la actualidad existen diversas herramientas que utilizan este protocolo para la
comunicación cliente servidor de un servicio de directorio. Lo más relevante es que
incluso Active Directory de Windows utiliza este protocolo de comunicación.
OpenLDAP: es la implementación libre del protocolo LDAP. Tiene su propia
licencia y es compatible con otros servidores que utilicen el mismo protocolo. Es
utilizado por distintas distribuciones Linux y BSD.
Active Directory: es un almacén de datos de directorio con licencia Microsoft e
implementado en sus sistemas operativos server desde Windows 2000.
Realmente bajo la estructura de Active Directory se encuentra un esquema
LDAPv3, por lo que también es compatible con otros sistemas que implemente
este protocolo en sus directorios.
Red Hat Directory Server: es un servidor que también se basa en LDAP similar a
Active Directory, pero mediante una herramienta de código abierto. Dentro de
este directorio podremos almacenar objetos como usuarios claves, grupos,
políticas de permisos, etc.
Apache Directory Server: otra de las grandes implementaciones que utilizan LDAP
es el directorio con licencia de Apache Software. Además, implementa otros
protocolos como Kerberos y NTP y cuenta con una interfaz de vistas propias de
las bases de datos relacionales.
Novell Directory Services: este es el servidor de directorio propio de Novell para
gestionar el acceso a un almacén de recursos en uno o varios servidores
conectados en red. Se compone de una estructura de base de datos jerárquica
orientada a objetos en la que se almacenan todos los objetivos típicos de los
directorios.
Open DS: terminamos esta lista con el directorio basado en java de SUN
Microsystems, que posteriormente se liberaría para todos los usuarios. Por
supuesto, está desarrollado en JAVA el necesitaremos el paquete Java Runtime
Environment (JRE) para que éste funcione.