LDAP ("Lightweight Directory Access Protocol")

LDAP ("Lightweight Directory Access Protocol") implementa un Servicio de directorio Jerárquico y Distribuido para accesar depósitos de información referente a usuarios,contraseñas y otras entidades en un entorno de red, ofreciendo una amplia capacidad de filtrado sobre la información que esta siendo solicitada.

Entonces LDAP es una Base de Datos ?

No en el termino que es utilizado en la Industria (Cumplir con la prueba del acido ); para aterrizar la posición que ocupa LDAP en la arquitectura de un sistema, LDAP funciona de una manera muy similar a DNS/BIND , esto es, esta diseñado y optimizado para ofrecer lectura y búsqueda de información a una gran cantidad de requisiciones simultaneas, sin embargo, se encuentra severamente limitado en cuanto a: actualizaciones y control de transacciones en Información , algo que debe ser delegado a una base de datos , lo anterior no implica que LDAP no es capaz de actualizar y controlar transacciones , sino que no esta optimizado para esto.

LDAP, contrastado con DNS que mantiene resoluciones de Nodos IP a dominios, es capaz de mantener cualquier tipo de información de una manera jerárquica, observe las similitudes

En DNS
.com (Todos los dominios son .com)
osmosislatina.com osmosislatina.com sun.com sun.com
desarrollo.osmosislatina.com www.osmosislatina.com java.sun.com solaris.sun.com

En LDAP
Empresa (Todos los atributos pertenecen a "Empresa")
méxico méxico brasil brasil venezuela
drubio garaiza lsantos ffontes kpiment
3ffw12eg 2emndfs we334faf tert232 4fhlzpqa
(52)-(6)-3422321 (52)-(5)-2353312 (55)-(11)-8696446 (55)-(21)-7453242 (58)-(2)-4943421

En LDAP se mantiene un árbol jerárquico con diversos atributos; en la ilustración anterior todos los atributos pertenecen a empresa , de aquí se subdivide por países, dentro de cada país se encuentran: usuarios, contraseñas y teléfonos. Cabe señalar que los atributos pueden ser de cualquier tipo imaginable , desde hardware (impresoras,servidores,pc) hasta fotografías o información personal como el caso anterior, todo asociado en cierto punto de la jerarquía.

Es posible accesar toda esta jerarquía de información aplicando filtros y accesos de seguridad; lo anterior permite a LDAP operar de una manera muy similar a un Web-Site, básicamente permitiendo acceso a información partiendo de un nombre conocido (empresa=dominio (osmosislatina.com)) pero restringiendo el acceso a ciertos atributos como contraseñas, teléfonos en base a determinados filtros como: nodos IP de acceso, país de origen, departamento.etc..

LDAP también es capaz de replicar su información a otros puntos en la Red como DNS ( servidores slaves y cache en DNS ), esto facilita la disipación de información a diversos puntos; si alguna vez se pregunto:

Que utiliza una empresa o proveedor de servicios de Internet (ISP) para permitir acceso de una sola cuenta y contraseña y evitar duplicar información si opera en México(D.F),Sao Paulo, Madrid y Los Angeles ? Seguramente es una implementación LDAP

Lo anterior suena como una panacea pero tiene sus detalles, de nuevo habría que regresar a los fundamentos de DNS para notar esto.

Un Navegador ("Explorer" o "Netscape") esta diseñado para realizar búsquedas directamente en un "DNS Server", basta introducir una dirección: www.osmosislatina.com y el navegador intentará buscar en un "DNS Server", ahora bien, supongamos que desea implementar el caso mencionado anteriormente: una sola cuenta y contraseña de acceso para verificar usuarios de diversos países y/o ciudades , Como y quien verifica esta contraseña ? Para esto se requiere un cliente LDAP que buscará en un "LDAP Server" la información.

Sin embargo, al menos que pretenda instalar waX.500 o xax500 en 3000 o 5000 PC's y además enseñarle a los usuarios finales a utilizarlo, debe buscar una alternativa y esta es: programar su propio cliente LDAP...continúe y observará como.

Implementaciones de Directorios Jerárquicos y "LDAP Servers"

Existen un gran numero de implementaciones de directorio jerárquicos y "LDAP Servers" ; uno de los pioneros en ofrecer este tipo de servicio fue Novell y últimamente Microsoft (Windows 2000), Oracle y otras empresas. En el mundo *nix estos servicios iniciaron con X.500 DAP (Directory Access Protocol), sin embargo, X.500 es una implementación que requiere operar sobre su propio protocolo de Red, de aquí surge LDAP que corre bajo TCP/IP, en efecto reduciendo la carga administrativa de redes ya que puede operar bajo sistemas existentes (TCP/IP) sin mayor problema.

Una implementación de "LDAP Server" open-source es OpenLDAP , este software puede operar bajo una variedad de sistemas *nix y ofrece todas las funcionalidades esperadas de una implementación LDAP: filtros de autorización, replicación de Información, facilidad de configuración, operable bajo "threads", etc.

"Clientes LDAP "

El guardar información en Directorios Jerárquicos (NDS de Novell o ADS "Active Directory Service" de Windows 2000) y "LDAP Servers" ( OpenLDAP ) ahorra una cantidad substancial de administración ya que permite centralizar información de toda una corporación desde equipo de computo hasta información telefónica por empleado,sin embargo, para accesar y actualizar esta información se requiere de un "Cliente LDAP", un "Cliente LDAP" capaz de realizar búsquedas y actualizar información en un "LDAP Server" es: "LDAP Browser/Editor v2.8.2" , considerelo un navegador para "LDAP Servers". Ahora bien, el "Cliente LDAP" anterior funciona como producto independiente,pero como es que se puede autorizar usuarios con un "Cliente LDAP" ? Generalmente esto requerirá escribir un "Cliente LDAP" (Vea Writing LDAP Clients )

Directorio LDAP Mundial

A través de este "Cliente LDAP" escrito en C, cada vez que un empleado se conecte vía Dial-Up a cualquier "Host" de la empresa, los servidores (vía el "Cliente LDAP") deben transformar el usuario y contraseña proporcionadas y realizar la búsqueda en un "LDAP Server", este programa seria el "Cliente LDAP" escrito en C.(Vea Writing LDAP Clients )

Fácil ?

Escribir un programa en C es fácil, sin embargo, este programa que escribió solo puede buscar en "LDAP Servers". Que ocurre cuando un usuario de Brasil visite España e intente accesar la Red, siendo que en Brasil se utiliza un "Directorio Distribuido" NDS de Novell ?

Servirá el "Cliente LDAP" escrito en C para accesar información en un sistema NDS de Novell ? Claro que no. Para este tipo de situaciones es conveniente utilizar un lenguaje como Java que ofrece mayor flexibilidad, el componente Java en este caso seria JNDI ("Java Naming and Directory Interface").

Porque JNDI ?

En JNDI es posible utilizar un API estandarizado para escribir el programa antes mencionado, la ventaja es que casi todos los productos tanto "Directorios Distribuidos" como "LDAP Servers" se apegan a este estándar, de esta forma su programa podrá ser utilizado para accesar cualquier "Directorio Distribuido" o "LDAP Server", aquí vale el lema Java : "Write once run everywhere"!.

Links: