LDAP ha sido un protocolo de identidad fundamental desde principios de la década de 1990, cuando se desarrolló como una alternativa más ligera al Protocolo de Acceso a Directorios X.500. Hoy en día sigue integrado en la mayoría de los entornos empresariales y continúa siendo la base de los servicios de autenticación y directorios, incluso ahora que las organizaciones están adoptando soluciones de identidad en la nube.
LDAP funciona según un modelo cliente-servidor en el que un cliente LDAP envía solicitudes a un servidor de directorio, que almacena y devuelve información procedente de un directorio centralizado. La comunicación se realiza a través de TCP/IP, normalmente en el puerto 389 para conexiones estándar o en el puerto 636 para LDAPS (LDAP sobre SSL/TLS).
A grandes rasgos, un intercambio LDAP se desarrolla en cuatro pasos:
- Conéctate:El cliente abre una sesión TCP con el servidor LDAP.
- Encuadernación: El cliente se autentica ante el servidor, ya sea de forma anónima o con credenciales.
- Solicitud:El cliente envía una operación, como una solicitud de búsqueda o modificación, al directorio.
- Respuesta:El servidor devuelve los datos solicitados o un código de estado, y el cliente acaba emitiendo una orden de desvinculación para cerrar la sesión.
El servidor organiza sus datos en un árbol jerárquico y responde a un conjunto definido de operaciones, entre las que se incluyen «bind», «search», «compare», «add», «modify», «delete» y «unbind». Este modelo de acceso compartido en tiempo real es lo que hace que LDAP sea idóneo para entornos en los que muchas aplicaciones necesitan consultar la misma fuente autorizada de datos de identidad.
La estructura del directorio LDAP
Un directorio LDAP almacena información en un árbol jerárquico conocido como «árbol de información del directorio» (DIT). Cada entrada del árbol representa un objeto (como un usuario, un grupo o un dispositivo) y se identifica mediante un «nombre distinguido» (DN) único que describe su posición en la jerarquía.
El DN se compone de una serie de componentes que se leen de lo más específico a lo más general:
- cn(nombre común), como el nombre completo de una persona
- ou(unidad organizativa), como un departamento
- dc(componente del dominio), como partes de un nombre de dominio
Por ejemplo, el DN «cn=John Smith,ou=Engineering,dc=example,dc=com» identifica a un usuario llamado John Smith en la unidad organizativa «Engineering» dentro del dominio «example.com».
Operaciones LDAP
LDAP define un pequeño conjunto de operaciones estandarizadas que abarcan todo el ciclo de vida de la interacción de un cliente con un directorio, desde la autenticación hasta las operaciones de lectura, escritura y cierre de la sesión.
- Encuadernar: autentica al cliente ante el servidor de directorio y establece una sesión autenticada. La operación «bind» es la que permite utilizar LDAP como mecanismo de autenticación, ya que un «bind» correcto confirma que las credenciales enviadas coinciden con una entrada válida del directorio.
- Buscar en: busca en el directorio las entradas que cumplan unos criterios específicos, utilizando una sintaxis de filtro para definir qué atributos y valores deben devolverse. La búsqueda es la operación LDAP más utilizada y da lugar a casos de uso como la búsqueda de usuarios, la comprobación de la pertenencia a grupos y la exploración del directorio.
- Comparar: comprueba si un valor de atributo determinado coincide con el valor almacenado en una entrada, devolviendo una respuesta «verdadero» o «falso» sin revelar el valor almacenado en sí. La función «Compare» se utiliza a menudo para tareas de verificación sencillas en las que no es necesaria una búsqueda completa.
- Añadir: crea una nueva entrada en el directorio en una ubicación específica del árbol. Las operaciones de adición se utilizan habitualmente durante el aprovisionamiento de usuarios, cuando es necesario registrar nuevas cuentas, grupos o dispositivos en el directorio.
- Modificar: actualiza los atributos de una entrada existente, lo que permite realizar cambios como restablecer contraseñas, actualizar la pertenencia a grupos o modificar el perfil. La función «Modificar» permite añadir, sustituir y eliminar valores de atributos concretos dentro de una entrada.
- Modificar DN: cambia el nombre de una entrada o la traslada a otra ubicación dentro del árbol de directorios. La opción «Modificar DN» se utiliza cuando se producen cambios en las estructuras organizativas, como por ejemplo cuando un usuario cambia de departamento o se reestructura una unidad organizativa.
- Eliminar: elimina una entrada del directorio. La función «Eliminar» se suele utilizar durante el proceso de desactivación, cuando se dan de baja cuentas o recursos y es necesario limpiar sus registros del directorio.
- Desvincular: cierra la sesión del cliente y da por terminada la conexión con el servidor. Aunque el nombre sugiera que revierte un «bind», «unbind» en realidad indica que el cliente ha finalizado su actividad y libera los recursos del servidor asociados.
- Operaciones ampliadas: es un marco que permite a los proveedores y a los organismos de normalización definir operaciones adicionales más allá del conjunto básico. StartTLS, que convierte una conexión LDAP estándar en una conexión cifrada, es una de las operaciones ampliadas más utilizadas.
El protocolo LDAP se utiliza en entornos empresariales para centralizar los datos de identidad y permitir un acceso coherente a dichos datos desde múltiples aplicaciones y servicios. Entre los casos de uso más habituales se incluyen:
- Autenticación centralizada: validar las credenciales de los usuarios para numerosas aplicaciones desde un único directorio, lo que reduce la proliferación de contraseñas y la carga administrativa
- Gestión de usuarios y grupos: el almacenamiento y la organización de los registros de los empleados, los contratistas y las cuentas del sistema, junto con los grupos y los permisos asociados a ellos
- Libreta de direcciones y búsqueda de contactos: permitir que los clientes de correo electrónico y las herramientas de colaboración consulten un directorio corporativo para obtener información de contacto
- Gestión de dispositivos y recursos: seguimiento de recursos de red como impresoras, servidores y almacenamiento compartido
- Fundamentos del inicio de sesión único: actúa como fuente de identidad subyacente que utilizan los sistemas de inicio de sesión único (SSO) para verificar a los usuarios y recuperar los atributos de su perfil
La autenticación LDAP es el proceso mediante el cual una aplicación verifica la identidad de un usuario estableciendo una conexión con un directorio LDAP utilizando las credenciales que el usuario ha facilitado. Si el directorio confirma que las credenciales coinciden con una entrada válida, se autentica al usuario y se le concede acceso a la aplicación solicitante.
El proceso típico de autenticación LDAP se desarrolla de la siguiente manera:
- El usuario introduce sus credenciales (normalmente, un nombre de usuario y una contraseña) en una aplicación.
- La aplicación envía una solicitud de conexión LDAP al servidor de directorio con dichas credenciales.
- El servidor LDAP localiza la entrada del usuario en el árbol de directorios utilizando el identificador facilitado.
- El servidor compara la contraseña introducida con la credencial almacenada para esa entrada.
- El servidor devuelve una respuesta de éxito o de error a la aplicación.
- Si la operación se realiza correctamente, la aplicación concede al usuario acceso al recurso solicitado.
Enlace simple frente a enlace SASL
LDAP admite dos mecanismos principales de enlace, y la elección entre ambos tiene importantes implicaciones de seguridad en cuanto a la forma en que se transmiten y verifican las credenciales durante la autenticación.
A encuadernación sencilla envía el nombre de usuario y la contraseña directamente al servidor, que transmite las credenciales en texto sin cifrar, a menos que la conexión esté protegida por TLS (como ocurre con LDAPS o StartTLS).
A Enlace SASL (Capa de autenticación y seguridad simple) admite mecanismos de autenticación más sólidos, como Kerberos, certificados de cliente y otros métodos acoplables, y es la opción preferida en entornos en los que la exposición de las credenciales supone un riesgo.
A menudo se confunden LDAP y Active Directory, pero no son tecnologías competidoras. LDAP es un protocolo abierto para acceder a información de directorios, mientras que Active Directory es un producto de servicio de directorios Microsoft que utiliza LDAP como uno de sus métodos de acceso compatibles.
En pocas palabras, Active Directory utiliza el protocolo LDAP, pero LDAP no es lo mismo que Active Directory. Muchos servicios de directorio que no son de Microsoft, como OpenLDAP, 389 Directory Server y Oracle Internet Directory, también implementan el protocolo LDAP.
LDAP, SAML y OAuth son protocolos relacionados, pero distintos, que resuelven diferentes problemas dentro del ámbito más amplio de la gestión de identidades y accesos.
- LDAPgestiona el acceso a directorios y la autenticación, normalmente para recursos locales y aplicaciones internas. Se trata de un protocolo para consultar y modificar un directorio, y puede llevar a cabo la autenticación mediante la operación «bind».
- SAML (Security Assertion Markup Language) permite la autenticación federada para el inicio de sesión único (SSO) basado en web, mediante el intercambio de aserciones de autenticación y autorización entre un proveedor de identidad y un proveedor de servicios. Se utiliza habitualmente para que los usuarios inicien sesión en aplicaciones en la nube y SaaS.
- OAuth Es un protocolo de autorización que permite a las aplicaciones de terceros obtener un acceso limitado a los recursos de un usuario sin revelar sus credenciales. Regula lo que una aplicación puede hacer en nombre de un usuario, no quién es dicho usuario.
Muchos entornos modernos se basan en estos tres protocolos: LDAP como directorio subyacente para los datos de los usuarios, SAML para el inicio de sesión único (SSO) federado en aplicaciones en la nube y OAuth para el acceso delegado a las API. Para obtener una visión más detallada de cómo interactúan las capas de autenticación y gobernanza, consulta el artículo de RSA sobre gestión de identidades y IAM .
El protocolo LDAP sigue estando muy extendido y no se está sustituyendo de forma generalizada, incluso aunque las organizaciones adopten proveedores de identidad en la nube y aplicaciones SaaS. La mayoría de los entornos empresariales siguen recurriendo a los directorios LDAP existentes como fuente oficial de datos de los usuarios, y las plataformas modernas de gestión de identidades y acceso (IAM) suelen estar diseñadas para integrarse con dichos directorios, en lugar de sustituirlos.
La tendencia predominante se inclina hacia las arquitecturas híbridas, en las que los directorios LDAP coexisten con proveedores de identidad en la nube, plataformas de inicio de sesión único (SSO) y capas de autenticación multifactorial. En lugar de limitarse a realizar un enlace simple y conceder acceso, las organizaciones combinan cada vez más la autenticación LDAP con controles adicionales, como la autenticación multifactorial, la autenticación sin contraseña, la autenticación adaptativa, las decisiones de acceso basadas en el riesgo y la verificación continua. Este enfoque por capas preserva las inversiones existentes en directorios, al tiempo que aborda los riesgos relacionados con las credenciales que un simple enlace LDAP no puede mitigar.
De la RSA soluciones de gestión de identidades y accesos Se integra con los directorios LDAP existentes para añadir controles modernos de autenticación y acceso sobre la infraestructura heredada. RSA amplía la autenticación basada en LDAP con autenticación multifactorial (MFA), opciones sin contraseña y acceso basado en el riesgo, lo que permite a las organizaciones reforzar la seguridad de las identidades sin necesidad de sustituir los servicios de directorio de los que ya dependen.
El protocolo LDAP, por sí mismo, no cifra el tráfico de forma predeterminada, y las conexiones LDAP estándar transmiten las credenciales de enlace en texto plano. LDAP se vuelve seguro cuando se implementa con LDAPS o StartTLS para cifrar la conexión, en combinación con mecanismos de autenticación sólidos, como SASL, y controles adicionales, como la autenticación multifactorial. Sin estas protecciones, LDAP es vulnerable a ataques de interceptación e inyección de credenciales.
LDAP utiliza el puerto TCP 389 para conexiones estándar sin cifrar y el puerto TCP 636 para LDAPS, que cifra la comunicación mediante SSL/TLS. StartTLS es una alternativa que se inicia en el puerto 389 y actualiza la conexión a una sesión cifrada. Los servicios de catálogo global de Active Directory utilizan los puertos 3268 y 3269 para su equivalente cifrado.
LDAP transmite datos a través de una conexión TCP sin cifrar en el puerto 389, lo que expone las credenciales y las consultas al directorio a posibles interceptaciones. LDAPS envuelve el mismo protocolo LDAP en un canal cifrado mediante SSL/TLS en el puerto 636, protegiendo así la conexión contra el espionaje y la manipulación. Por lo general, LDAPS es necesario en entornos en los que los datos confidenciales del directorio o el tráfico de autenticación atraviesan redes no fiables.
Sí, LDAP sigue siendo muy utilizado en entornos empresariales. Sigue siendo el protocolo de directorio subyacente de Active Directory, OpenLDAP y otros servicios de directorio, y sigue siendo fundamental para la autenticación, el aprovisionamiento de usuarios y las consultas de directorio tanto en arquitecturas locales como híbridas. Las plataformas de identidad en la nube suelen integrarse con LDAP en lugar de sustituirlo.
Una consulta LDAP es una solicitud de búsqueda enviada desde un cliente LDAP a un servidor de directorio para recuperar entradas que cumplan criterios específicos. Las consultas utilizan una sintaxis de filtro definida, como (&(objectClass=user)(department=Engineering)), para especificar qué atributos y valores deben devolverse. Las aplicaciones utilizan consultas LDAP para buscar usuarios, grupos y otros objetos del directorio a gran escala.
Sí, LDAP puede dar soporte a aplicaciones en la nube mediante la sincronización de directorios, ofertas de «LDAP como servicio» o la integración con proveedores de identidad en la nube que federan la autenticación con los directorios LDAP locales. Muchas organizaciones utilizan SAML o SCIM junto con LDAP para conectar los directorios locales con las aplicaciones SaaS, manteniendo LDAP como la fuente de identidad de referencia.