Acceso a LDAP mediante Netscape Directory SDK

Por:iuav, enviado 07 oct 2009

LDAP

LDAP (Lightweight Directory Access Protocol) o Protocolo de Acceso Ligero a Directorio es un protocolo de comunicación que permite acceder y modificar información almacenada en un directorio ordenado y distribuido en forma jerárquica, actualmente está en la versión 3. LDAP permite almacenar información de cuentas de usuario, contactos, ubicación de diversos recursos de la red, permisos de usuarios, certificados, entre otros; éste directorio está optimizado para acceso de lectura en forma eficiente y almacenar datos de poco tamaño, las modificaciones se presentan con poca frecuencia como el caso de un correo electrónico.

El protocolo LDAP accede a la información contenida en un árbol de información de directorio, las cuales están formados por un conjunto de atributos, indicando el nombre y su respectivo valor. Este directorio es único en una organización y es posible acceder de diversas aplicaciones.

 Utilidades de LDAP

  • Directorios de información, por ejemplo datos de empleados organizados por departamentos (siguiendo la estructura organizativa de la empresa) ó cualquier tipo de páginas amarillas.
  • Sistemas de autenticación/autorización centralizada, sistemas donde se guarda gran cantidad de registros y se requiere un uso constante de los mismos, por ejemplo, gestión de cuentas de acceso a una red corporativa, sistema de autenticación para páginas web, sistemas de control de entradas a edificios, oficinas, entre otros.
  • Sistemas de correo electrónico.
  • Sistemas de alojamiento de páginas web y FTP.
  • Sistemas de autenticación basados en RADIUS, para el control de accesos de los usuarios a una red de conexión o ISP.
  • Servidores de certificados públicos y llaves de seguridad.
  • Autenticación única ó "single sign-on" para la personalización de aplicaciones.
  • Perfiles de usuarios centralizados, para permitir itinerancia ó "Roaming".
  • Libretas de direcciones compartidas.

 Características de LDAP

  • Operaciones de lectura muy rápidas. Debido a la naturaleza de los datos almacenados en los directorios las lecturas son más comunes que las escrituras.
  • Datos relativamente estáticos. Los datos almacenados en los directorios no suelen actualizarse con mucha frecuencia.
  • Entorno distribuido, fácil replicación.
  • Estructura jerárquica. Los directorios almacenan la información de forma jerárquica de forma nativa.
  • Orientadas a objetos. El directorio representa a elementos y a objetos. Los objetos son creados como entradas, que representan a un conjunto de atributos.
  • Esquema estándar. Los directorios utilizan un sistema estándar que pueden usar fácilmente diversas aplicaciones.
  • Atributos multi-valor. Los atributos pueden almacenar un valor único o varios.
  • Replicación multi-master. Muchos de los servidores LDAP permiten que se realicen escrituras o actualizaciones en múltiples servidores.

Estructura del Arbol LDAP

Entradas

El modelo de información de LDAP está basado en entradas. Una entrada es un conjunto de atributos que tienen un único Nombre Distintivo DN (Distinguished Name) y de forma global. El DN se utiliza para referirse a una entrada sin ambigüedades. Cada atributo de una entrada tiene un tipo y está asociado uno o más valores. Los tipos son normalmente palabras nemotécnicas, como "cn" para common name, o "mail" para una dirección de correo electrónico. La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un atributo cn puede tener el valor "Mariano Apaza Quispe". Un atributo mail puede contener un valor "mapaza@nspsac.com". El atributo jpegPhoto contiene una fotografía en formato JPEG.

Atributos

Los datos del directorio son un conjunto de atributos y sus respectivos valores. Por ejemplo el atributo commonName, o cn, se usa para representar el nombre de una persona.

Los datos de una persona que se registra en el directorio se definen mediante el conjunto de atributos que están definidas en las especificaciones de esquemas, en este caso la clase de objetos person.

En una entrada de directorio se presentan atributos obligatorios que deben estar presentes en la clase de objetos y atributos opcionales que no es necesario que esté presente en una entrada de clase de objetos.

Tipos de Atributos

Una definición de tipo de atributo especifica la sintaxis de un atributo y cómo se ordenan y comparan los atributos de ese tipo. Los tipos de atributos en el directorio forman un árbol de clases. Por ejemplo, el tipo de atributo "commonName" es una subclase del tipo de atributo "name". Hay atributos obligatorios y opcionales que se muestran en la Tabla 1.1.

 

Identificador de Atributo

Descripción del Valor de Atributo

NUMERICOID (obligatorio) Identificador de Objeto Único (OID)
NAME Nombre del Atributo
DESC Descripción del Atributo
OBSOLETE "true" si es obsoleto; "false" o ausente si no lo es
SUP Nombre del tipo de atributo superior del que se deriva el tipo de atributo
EQUALITY Nombre ó OID de la regla de correspondencia si la igualdad de correspondencia está permitida; ausente si no lo está
ORDERING Nombre o OID de la regla de correspondencia si está permitida la ordenación; ausente si no lo está.
SUBSTRING Nombre o OID de la regla de correspondencia si está permitida la correspondencia de sub-string ausente si no lo está.
SYNTAX "true" si el atributo no es multi-valor; "false" o ausente si lo es
COLLECTIVE "true" si el atributo es colectivo; "false" o ausente si no lo es
NO-USER-MODIFICATION "true" si el atributo no es modificable por el usuario; "false" o ausente si lo es
USAGE Descripción del uso del atributo
Tabla 1: RFC 2252: AttributeTypeDescription

Clase de Objetos

En LDAP, una clase de objetos define el conjunto de atributos a ser usados para definir una entrada. El estándar LDAP proporciona estos tipos básicos para las clases de objetos:

  1. Grupos en el directorio, entre ellos listas no ordenadas de objetos individuales o de grupos de objetos.
  2. Emplazamientos, como por ejemplo el nombre del país y su descripción.
  3. Organizaciones que están en el directorio.
  4. Personas que están en el directorio.

Una entrada determinada puede pertenecer a más de una clase de objetos. Por ejemplo, la entrada para personas se define mediante la clase de objetos person, pero también puede definirse mediante atributos en las clases de objetos inetOrgPerson, groupOfNames y organization La estructura de clases de objetos del servidor determina la lista total de atributos requeridos y permitidos para una entrada concreta.

 LDIF

 El formato de intercambio de LDAP es un archivo de texto que almacena información de entradas de objetos en forma jerárquica. Esto nos permite importar y exportar información de directorio entre servidores de directorios basados en LDAP.

Modelo de Nombres LDAP

Cada entrada de directorio LDAP está organizada en un árbol de información de directorio y para identificar a alguna entrada de directorio se accede mediante su nombre distintivo (DN). Cada nombre distintivo puede estar formado por una secuencia de nombres distintivos relativos RDN (Relative Distinguished Name), como uid=mapaza. Cada nombre distintivo relativo en un DN corresponde a una rama del árbol de información de directorio. Asimismo está formado por otros atributos que lo relacionan con las jerarquías superiores como componentes de dominio DC (Domain Component), así, dc=nspsac, dc=com. Después del nombre distintivo hay una serie de atributos que definen las entradas.

Para comprender un poco sobre la estructura del directorio veamos el árbol de la gráfica donde se describe a la empresa dc=nspsac, dc=com como principal y teniendo como unidades organizacionales a Admin, People y Developer, de las cuales en cada unidad organizacional es posible agregar directorios, en este caso una cuenta de usuario con su información de datos de identificación, registro del empleado, datos de su jefe, correo electrónico, teléfono fijo, teléfono celular, la dirección en la que vive, la clave de identificación de la cuenta y la foto correspondiente del empleado.

 

 

 Arbol de Directorio LDAP
Arbol de Directorio LDAP

  La información descrita anteriormente para que se encuentre registrado en el directorio LDAP creamos un formato LDIF estándar, que es un archivo de texto que contiene información de configuración LDAP y contenido de directorios, en este caso será mapaza.ldif que se muestra a continuación:

dn: uid=mapaza,ou=People,dc=nspsac,dc=com
givenName: Mariano
sn: Apaza Quispe
mail: mapaza@nspsac.com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: contribuyente
uid: mapaza
cn: Mariano Apaza Quispe
dni: 01234567
ruc: 10012345675
employeeNumber: A214
manager: uid=jperez,ou=Admin,dc=nspsac,dc=com
telephoneNumber: 051505050
mobile: 0519797979
direccion: Jr. Los Incas Nro. 6548
st: Puno
l: Ilave
userPassword: abc
jpegPhoto:<file:///var/photo.jpg

Además al crear un directorio de entrada los atributos pertenecen a un conjunto de clase de objetos que están definidos en una especificación de esquemas según el estándar, en este caso pertenece a la clase de objetos person, organizationalPerson, inetOrgPerson y contribuyente, de éste último veremos más adelante.

 

Otros Artículos en esta sección

¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro de Programación »