2009-05-19 31 views
58

He estado en contacto con LDAP en muchos proyectos en los que participé pero, a decir verdad, realmente no lo entiendo. Pensé que era solo un directorio de personas, pero después descubrí que puede contener cualquier objeto en una estructura jerárquica.¿Qué soluciona LDAP?

Instalé openldap en mi caja y encontré muchos tutoriales sobre la instalación.

¿Qué es LDAP? ¿Cuáles son los escenarios donde LDAP es la elección correcta? ¿Cuáles son los conceptos de LDAP que debería saber para trabajar con él? ¿Cuáles son las ventajas de LDAP? ¿Se usa solo porque las aplicaciones antiguas lo usaron? ¿Hay algún buen doc en Internet explicando todas estas preguntas?

ACTUALIZACIÓN: Como complemento de las respuestas que he encontrado this link que contiene una guía de inicio rápido para los recién LDAP como yo.

Respuesta

38

¿Qué es LDAP? ¿Cuáles son los escenarios donde LDAP es la elección correcta?

En su núcleo, LDAP es un protocolo para acceder a los objetos que son adecuados para el almacenamiento en un directorio.Si algo es "adecuado" es una determinación totalmente subjetiva que queda en manos de los implementadores, pero normalmente esto significa colecciones de muchos objetos que cada uno tiene (o nunca) datos actualizados con poca frecuencia, donde cada objeto tiene una forma obvia o canónica de buscarse arriba:

  • una guía telefónica (buscar por nombre o por número de teléfono)
  • títulos en una biblioteca (buscar por título, autor, etc.)
  • inquilinos de un edificio (mirar hacia arriba por piso, suite, nombre, etc.)

y así sucesivamente.

Tenga en cuenta que LDAP en sí mismo es solo un protocolo y no proporciona ningún almacenamiento real - de la misma manera, HTTP no implica nada sobre si está utilizando Apache, Jetty, Tomcat, Mongrel, et al. . como un servidor web. (Uno de los problemas con LDAP, en general, es la reutilización de los nombres confuso para referirse a cosas diferentes. Wikipedia tiene a good section en esto.)

2

LDAP es un protocolo, un artículo de Wikipedia lo explica de manera adecuada http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol

Es una forma de consultar una estructura organizativa subyacente, como Active Directory de Microsoft. Puede utilizar las consultas LDAP para obtener todo tipo de información acerca de los usuarios, lo utilizan para establecer los derechos de aplicación, etc.

5

Este enlace se explicará LDAP http://blogs.oracle.com/raghuvir/entry/ldap

Utilizamos LDAP en nuestra oficina por correo electrónico búsquedas de direcciones en toda la compañía. También lo utilizamos como un servicio de inicio de sesión único para nuestras aplicaciones internas.

9

LDAP tiene O (1) rendimiento de lectura, a cambio de O (algo peor) rendimiento de escritura. Es ideal para datos a los que se accede con frecuencia, pero que cambian raramente: directorios de personas, nombres y direcciones de máquinas, etc. (de ahí el acrónimo: Protocolo ligero de acceso a directorios)

LDAP es la elección correcta donde el dolor de usar una base de datos que no es relacional, en términos de familiaridad del desarrollador y características de rendimiento extraño, es menor que la ganancia de acceso de lectura deslumbrantemente rápido.

+5

por favor su O () tiene razón no quieren decir lo que piensas – Javier

+1

para aclarar: lo que quise decir es que los tiempos de recuperación no dependen del número de elementos en el almacén de datos (es decir, las consultas no se vuelven más lentas cuanto más grande es la tabla). Sin embargo, los insertos sí lo hacen en la mayoría de las implementaciones de LDAP. –

+1

Cualquier servidor ldap digno de su sal, mantiene un índice en el dn (también conocido como clave principal) y le permite definir índices adicionales para optimizar las consultas comunes. – dwarring

2

LDAP es un protocolo de acceso; solo proporciona una API para la tecnología subyacente para la cual está tratando de encontrar aplicaciones: un directory service. OpenLDAP es uno de los servicios de directorio de código abierto; Sun tiene otra implementación llamada OpenDS. Active Directory y Novell NDS son otros dos comúnmente vistos en el campo.

El directorio se puede usar para almacenar información sobre cualquier tipo de recurso y las relaciones entre los recursos, por ejemplo, los derechos de un usuario a un directorio, una impresora o un dispositivo de acceso a la red.

1

En uno de mis antiguos lugares de trabajo que utilizamos LDAP como nuestro sistema de autenticación de usuario principal.

Esto a su vez proporcionó a nuestros diversos sistemas información sobre qué departamento. pertenecían a, donde deberían montar sus directorios de inicio, información de contacto, administración de empleados.

No necesariamente controlado por LDAP, pero otras cosas que hemos mezclado para trabajar a través de LDAP era la existencia de usuarios de SQL, K4, samba y la generación de cuentas de correo electrónico.

3

Estoy trabajando a tiempo parcial y soy estudiante a tiempo completo. Mi plan de estudios alienta (lee requiere) muchos proyectos grupales.

He usado openLdap y phpLdapAdmin para controlar el acceso a mis repositorios Subversion y Mercurial, proyectos Trac, Hudson, etc. No fue fácil de instalar, pero el tiempo ahorrado en la administración fue un envío de Dios.

Si tiene proyectos en los que tendrá muchos grupos de personas que necesitan poder utilizar diferentes recursos, es una buena herramienta.

+0

Según la escala y el alcance de la base de usuarios, a veces los archivos son suficientes. A veces un DB, a veces LDAP. A menudo depende de la escala. Los servidores LDAP en general están optimizados para este uso, a menudo escalan mejor. Corte menos claro de una caja con casos de uso más pequeños. – geoffc

13

Los DIT son un esquema de descripción jerárquica que se presta a algos B-Tree muy bien, lo que resulta en un tremendo rendimiento de búsqueda en la mayoría de los casos. Directory Server como OpenDS devuelve búsquedas indexadas en microsegundos, mientras que los sistemas RDBMS son mucho más lentos. Los servidores de directorios (a menudo denominados servidores LDAP) intercambian recursos (RAM, CPU) por una respuesta de lectura rápida. Los sistemas RDBMS proporcionan una mayor funcionalidad en términos de gestión de los datos en cuestión. ¿Necesita velocidad con pocas o ninguna actualización, simplicidad y pequeño protocolo de red? Use un servidor de directorio. ¿Necesita capacidades de administración de datos y minería, y/o alta tasa de cambio de la base de datos con aspectos relacionales definidos entre los datos? Use un RDBMS (MySQL es su mejor apuesta aquí).

+0

Buena combinación de descriptivo y prescriptivo. Bienvenido a SO! –

5

Una perspectiva que me gusta es que LDAP es una aplicación en la parte superior de una tienda de persistencia y una base de datos es una tienda de persistencia. Ambos pueden usarse para almacenar información del usuario.

LDAP le proporciona una jerarquía que es más difícil de hacer en una base de datos. Puede crear una jerarquía en una base de datos, pero es más difícil hacer cosas como delegación (estas filas le pertenecen solo a usted) o ACL en filas. Por lo tanto, es más fácil eliminar problemas de seguridad de la base de datos si usa LDAP para almacenar identidades de usuario. Tratar de resolverlo en la base de datos es extraño.

Al mismo tiempo, LDAP es terrible para informar contra (transformar LDAP a un DB para informar). Almacenar atributos en el árbol que necesitan ser buscados rápidamente puede ser problemático para el rendimiento (no haga esto, tenga un DB en el lateral o intente aplanar la consulta rediseñando su DIT). Almacenar atributos en un DIT muy profundo es simplemente un mal diseño LDAP o del sistema, pero a veces es inevitable si está vinculado a un producto de proveedor o una aplicación heredada.