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 ldapsearch
Befehlszeilentools 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=com
dieses 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=com
zwei untergeordnete Knoten ( dc=foo
und dc=bar
) hat, möchte ich, dass sich meine Abfragen auf den dc=foo,dc=com
Teilbaum und nicht auf den dc=bar,dc=com
Teilbaum beziehen.
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:
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
quelle