Was genau IST in LDAP ein Bind-DN?

19

Ich habe verschiedene Codeteile geschrieben, die eine Verbindung zu LDAP-Servern herstellen und Abfragen ausführen, aber für mich war es immer Voodoo. Eine Sache, die ich nicht wirklich verstehe, ist das Konzept eines Bind-DN. Hier ist ein Beispiel für die Verwendung des ldapsearchBefehlszeilentools von openldap. (Ignorieren Sie die fehlende Authentifizierung.)

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

Was ist der Zweck und die Funktion -D dc=example,dc=comdieses Teils? Warum müssen wir uns an einen bestimmten Ort in der Verzeichnishierarchie binden? Soll festgelegt werden, für welchen Teil des Verzeichnisses meine Abfragen gelten sollen? Wenn der Wurzelknoten des Verzeichnisses beispielsweise dc=comzwei untergeordnete Knoten ( dc=foound dc=bar) hat, möchte ich, dass sich meine Abfragen auf den dc=foo,dc=comTeilbaum und nicht auf den dc=bar,dc=comTeilbaum beziehen.

dirtside
quelle

Antworten:

18

Ein Bindungs-DN ist ein Objekt, an das Sie innerhalb von LDAP binden, um Ihnen die Berechtigung zu erteilen, das zu tun, was Sie tun möchten. Einige (viele?) LDAP-Instanzen erlauben keine anonymen Bindungen oder erlauben nicht, dass bestimmte Vorgänge mit anonymen Bindungen ausgeführt werden. Sie müssen daher einen bindDN angeben, um eine Identität für diese Operation zu erhalten.

Auf ähnliche nicht-technische Weise - und ja, das ist eine Strecke - können Sie bei einer Bank die Zinssätze einsehen, ohne ihnen einen Ausweis zu geben. Um jedoch ein Konto zu eröffnen oder Geld abzuheben, müssen Sie über einen Ausweis verfügen um eine Identität zu haben, die sie kennen - diese Identität ist der bindDN.

John
quelle
Entspricht der bindDN immer einem Knoten im Verzeichnis? Oder kann es eine beliebige Zeichenfolge sein?
Dirtside
Ja. Es muss einem Knoten entsprechen, der ein Kennwortattribut tragen oder auf andere Weise authentifiziert werden kann.
John
Tomayto, Tomahto. 🍅 Benutzername, DN binden. 🤷🏻♂️
emallove
31

Verwechseln Sie nicht den BaseDN mit dem BindDN .

Der baseDN einer Suche ist der Ausgangspunkt. Wo es anfängt zu suchen. Ziemlich selbsterklärend.

Der bindDN- DN ist im Grunde der Berechtigungsnachweis, mit dem Sie sich bei einem LDAP authentifizieren. Wenn Sie einen bindDN verwenden, wird dieser normalerweise mit einem dazugehörigen Kennwort geliefert.

Mit anderen Worten, wenn Sie einen bindDN angeben, verwenden Sie diesen Objektsicherheitszugriff, um den LDAP-Baum zu durchsuchen.

Die Zeichenfolge dc = example, dc = com ist nicht das beste Beispiel für einen bindDN, da es sich um eine "Domäne" für einen LDAP-Baum handelt. dc steht für domain component und jeder LDAP-Baum definiert seine Wurzel mit einem String in Form von dc = string, dc = string, ... Diese Strings sind jedoch kein "Pfad" wie der Rest des Baums.

Gültige Beispiele sind:

  • dc = Beispiel, dc = com
  • dc = meineDomäne
  • DC = Avery, DC = Long, DC = List, DC = Of, DC = Domains

Diese Wurzelelemente sind jedoch unteilbar. Sie sehen aus, als wären sie mehrere Elemente, die einen Pfad darstellen, wie der Rest des Baumes, aber das sind sie nicht . Zum Beispiel im letzten Beispiel ein Objekt dc = of, dc = domains nicht.

Stellen Sie sich vor, Sie benennen Ihr Laufwerk C: wie "D: \ my \ folder \". Jeder Pfad darin sieht ungefähr so ​​aus wie "D: \ mein \ Ordner \ mein \ echter \ Pfad", was verwirrend wäre, da der echte Dateipfad \ mein \ echter \ Pfad wäre, oder? Nun, so sieht die Basis (root) eines LDAP mit einer Menge von dc = -Elementen aus.

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

Marcelo
quelle
7
Das scheint ein unnötig verwirrendes Design zu sein, aber Ihre Erklärung macht Sinn.
Dirtside
1
Ja ich stimme zu. Es ist nicht die beste Wahl, deine Wurzel so zu benennen, dass sie wie ein Pfad aussieht, aber ich denke, es muss seine Gründe haben. Jetzt wissen Sie, warum alle DNs mit einer Reihe von dc = -Komponenten enden. =)
Marcelo