40 votes

Dans LDAP, qu'est-ce qu'un bind DN exactement?

J'ai écrit divers morceaux de code qui se connectent à des serveurs LDAP et exécutent des requêtes, mais c'est toujours un peu mystérieux pour moi. Une chose que je ne comprends pas vraiment, c'est le concept d'un DN de liaison. Voici un exemple utilisant l'outil en ligne de commande ldapsearch disponible à partir d'OpenLDAP. (Ignorez le manque d'authentification.)

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

Quel est le but et la fonction de la partie -D dc=example,dc=com de ceci ? Pourquoi avons-nous besoin de nous lier à un emplacement particulier dans la hiérarchie du répertoire ? Est-ce pour établir à quelle partie du répertoire mes requêtes doivent s'appliquer ? Par exemple, si le nœud racine du répertoire est dc=com, et qu'il a deux enfants (dc=foo et dc=bar), peut-être que je veux que mes requêtes soient dirigées contre le sous-arbre dc=foo,dc=com et non le sous-arbre dc=bar,dc=com ?

54voto

Marcelo Points 695

Ne confondez pas entre le baseDN et le bindDN.

  • Le baseDN d'une recherche est le point de départ. Où la recherche va commencer. Assez explicite.

  • Le bindDN DN est essentiellement l'identifiant que vous utilisez pour vous authentifier contre un LDAP.
    Lorsque vous utilisez un bindDN, il est habituellement associé à un mot de passe.

En d'autres termes, lorsque vous spécifiez un bindDN, vous utilisez cet objet d'accès à la sécurité pour parcourir l'arborescence LDAP.

Maintenant, la chaîne dc=exemple,dc=com n'est pas le meilleur exemple pour un bindDN car c'est un "domaine" pour une arborescence LDAP. dc signifie domain component et chaque arborescence LDAP définit sa racine avec une chaîne sous la forme dc=chaîne,dc=chaîne,... Mais ces chaînes NE sont PAS un "chemin" comme le reste de l'arborescence.

Des exemples valides sont:

  • dc=exemple,dc=com
  • dc=mondomaine
  • dc=une,dc=longue,dc=liste,dc=de,dc=domaines

Mais, ces éléments racines sont indivisibles. Bien qu'ils semblent être plusieurs éléments représentant un chemin comme le reste de l'arborescence, mais ils ne le sont pas. (Ainsi pour ces éléments la virgule "," n'est PAS un séparateur d'éléments.)

Ainsi, pour l'exemple dc=une,dc=longue,dc=liste,dc=de,dc=domaines cela signifie que ceci est le nom de l'élément entier. Ce n'est PAS un chemin d'éléments. Il ne peut PAS être décomposé en sous-éléments : IL N'Y A PAS d'objet dc=de,dc=domaines.

Pour faire une analogie avec les chemins de fichiers :

Imaginez nommer votre disque C: comme D:\mon\dossier\. Chaque chemin là-dedans ressemblera à quelque chose comme D:\mon\dossier\mon\vrai\chemin ce qui serait confus car le vrai chemin du fichier serait \mon\vrai\chemin non? Eh bien, c'est ainsi que ressemble la base (racine) d'un LDAP, avec un ensemble d'éléments dc=.

Lien pertinent: Documentation Oracle : "L'outil ldapsearch" http://docs.oracle.com/cd/E19199-01/816-6400-10/lsearch.html

Lecture complémentaire

Il n'y a aucune norme qui impose une structure particulière pour les DIT LDAP, donc les serveurs de répertoire peuvent contenir des entrées dans n'importe quel arrangement hiérarchique. Cependant, il existe quelques conventions courantes. [...]
Par exemple, si l'organisation a un domaine de exemple.com, alors le contexte de nommage serait probablement quelque chose comme dc=exemple,dc=com. Il est parfaitement légal pour un contexte de nommage d'avoir plusieurs composants, donc juste parce que le serveur a une entrée avec un DN de dc=exemple,dc=com ne signifie pas nécessairement qu'il doit y avoir une entrée avec un DN de dc=com.

10 votes

Cela semble être un design inutilement confus, mais votre explication a du sens.

1 votes

Oui, je suis d'accord. Nommer votre root pour ressembler à un chemin n'est pas le meilleur choix mais je suppose qu'il doit avoir ses raisons. Maintenant, vous savez pourquoi tous les DNs se terminent par une série de composants dc=. =)

34voto

KOTJMF Points 623

Un DN lié est un objet auquel vous vous liez à l'intérieur de LDAP pour vous donner les autorisations nécessaires pour faire ce que vous essayez de faire. De nombreuses instances LDAP n'autorisent pas les liaisons anonymes, ou n'autorisent pas certaines opérations à être effectuées avec des liaisons anonymes, vous devez donc spécifier un bindDN pour obtenir une identité pour effectuer cette opération.

D'une manière non technique similaire - et oui, c'est un peu tiré par les cheveux - une banque vous permettra de passer et regarder leurs taux d'intérêt sans leur donner d'identifiant, mais pour ouvrir un compte ou retirer de l'argent, vous devez avoir une identité qu'ils connaissent - cette identité est le bindDN.

1 votes

Est-ce que le bindDN correspond toujours à un nœud dans l'annuaire? Ou peut-il être une chaîne arbitraire?

1 votes

Oui. Il doit correspondre à un nœud ayant la capacité de transporter un attribut de mot de passe ou d'être authentifié par ailleurs.

2 votes

Tomate, tomate. Nom d'utilisateur, DN de liaison.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X