En LDAP, ¿qué es exactamente un enlace DN?

19

He escrito varias piezas de código que se conectan a servidores LDAP y ejecutan consultas, pero siempre ha sido vudú para mí. Una cosa que realmente no entiendo es el concepto de un DN de enlace. Aquí hay un ejemplo usando la ldapsearchherramienta de línea de comandos disponible en openldap. (Ignore la falta de autenticación).

ldapsearch -h 1.2.3.4 -D dc=example,dc=com [query]

¿Cuál es el propósito y la función de la -D dc=example,dc=comparte de esto? ¿Por qué necesitamos vincularnos a una ubicación particular en la jerarquía de directorios? ¿Es para establecer a qué parte del directorio se deben aplicar mis consultas? Por ejemplo, si el nodo raíz del directorio es dc=comy tiene dos hijos ( dc=fooy dc=bar), ¿tal vez quiero que mis consultas estén en contra del dc=foo,dc=comsubárbol y no del dc=bar,dc=comsubárbol?

lado de tierra
fuente

Respuestas:

18

Un DN de enlace es un objeto al que se une dentro de LDAP para otorgarle permisos para hacer lo que esté tratando de hacer. Algunas (¿muchas?) Instancias LDAP no permiten enlaces anónimos, o no permiten que ciertas operaciones se realicen con enlaces anónimos, por lo que debe especificar un enlace bDN para obtener una identidad para realizar esa operación.

De una manera no técnica similar, y sí, esto es una exageración, un banco le permitirá ingresar y mirar sus tasas de interés sin darles ningún tipo de identificación, pero para abrir una cuenta o retirar dinero, tiene tener una identidad que conocen, esa identidad es el bindDN.

John
fuente
¿El bindDN siempre corresponde a un nodo en el directorio? ¿O puede ser una cadena arbitraria?
dirtside
Si. Debe corresponder a un nodo que tenga la capacidad de llevar un atributo de contraseña o de lo contrario estar autenticado.
John
Tomayto, Tomahto. 🍅 Nombre de usuario, enlace DN. 🤷🏻‍♂️
emallove
31

No se confunda entre la baseDN y la bindDN .

El DN base de una búsqueda es el punto de partida. Donde comenzará a buscar. Bastante autoexplicativo.

El DN de bindDN es básicamente la credencial que está utilizando para autenticarse en un LDAP. Cuando se usa un bindDN, generalmente viene con una contraseña asociada.

En otras palabras, cuando especifica un bindDN está utilizando el acceso de seguridad de ese objeto para atravesar el árbol LDAP.

Ahora, la cadena dc = ejemplo, dc = com no es el mejor ejemplo para un bindDN ya que es un "dominio" para un árbol LDAP. dc significa componente de dominio y cada árbol LDAP define su raíz con una cadena en forma de dc = cadena, dc = cadena, ... Pero estas cadenas no son una "ruta" como el resto del árbol.

Los ejemplos válidos son:

  • dc = ejemplo, dc = com
  • dc = midominio
  • dc = avery, dc = long, dc = list, dc = of, dc = dominios

Pero, estos elementos raíz son indivisibles. Parecen que son varios los elementos que representan un camino como el resto del árbol, pero son no . Por ejemplo, en el último ejemplo, un objeto dc = of, dc = domains no existe.

Imagine nombrar su unidad C: como "D: \ my \ folder \". Cada ruta allí se verá como "D: \ my \ folder \ my \ real \ path", lo cual sería confuso ya que la ruta real del archivo sería \ my \ real \ ruta ¿verdad? Bueno, así es como se ve la base (raíz) de un LDAP, con un conjunto de elementos dc =.

Enlace relevante: http://docs.oracle.com/cd/E19199-01/816-6400-10/lsearch.html

Marcelo
fuente
77
Parece un diseño innecesariamente confuso, pero su explicación tiene sentido.
dirtside
1
Si estoy de acuerdo. Nombrar su raíz también parece una ruta no es la mejor opción, pero supongo que debe tener sus razones. Ahora ya sabe por qué todos los DN terminan con una serie de componentes dc =. =)
Marcelo