LDAP Pfadnamen - Distinguished Names
Dieser Abschnitt des SelfADSI Tutorials beschäftigt sich mit LDAP-Filtern. Folgende Inhalte stehen in diesem Abschnitt zur Verfügung:
Distinguished Names
Wenn auf Verzeichnisobjekte zugegriffen werden soll, dann muss dabei ein spezieller LDAP-Name für jedes Objekt verwendet werden - dies gilt sowohl für einzelne Objekte wie auch für ganze Container. Ein Beispiel:
cn=Michael Sandt,ou=Consultants,ou=Mitarbeiter,dc=cerrotorre,dc=de
In Wirklichkeit handelt es sich dabei nicht um spezielle LDAP-Pfadnamen, sondern um technische Bezeichnungen für X.500-Verzeichnisobjekte. Und alle Verzeichnisdienste, die im SelfADSI-Projekt besprochen werden, bemühen sich zumindest um Kompatibilität mit dem X.500 Verzeichnisstandard.
Die Bezeichnung für X.500-Verzeichnisobjekte nennt man auch den Distinguished Name (DN).
Die Syntax von Distinguished Names wurde ursprünglich in RFC 1779 und RFC2253 festgelegt, mittlerweile gilt hier die modernere RFC-Spezifikation RFC4514.
Ein Distinguished Name repräsentiert ein Objekt in einem hierarchischen Verzeichnis, wobei der DN von den unteren zu übergeordneten Hierarchistufen von links nach rechts geschrieben wird. Jede Hierarchiestufe wird dabei in der folgenden Form geschrieben:
keyword=object
Für das Objekt "Philipp Foeckeler" in der Domäne "cerrotorre.de" würde der Distinguished Name hier so aussehen:
cn=Philipp Foeckeler,ou=Consultants,ou=Mitarbeiter,dc=cerrotorre,dc=de
Dabei wäre die Bezeichnung des Objekts allein (ohne den restlichen LDAP-Pfad) der sogenannte Relative Distinguished Name (RDN):
cn=Philipp Foeckeler
Der Wert des Relative Distinguished Names (hier also "Philipp Föckeler)
ist auch genau die Bezeichnung, mit der das Objekt in der Active Directory Verwaltung
sichtbar wird. Er hat mit dem Anzeigenamen nichts zu tun und kann auch
nur über die Funktion F2 (Kontextmenü->Umbenennen) verändert
werden.
Die Keywords (cn, ou, dc usw.) sind nicht case-sensitiv (sie können
also groß- oder kleingeschrieben werden) und bedeuten Folgendes:
cn: Common Name
ou: Organisational Unit
dc: Domain Component
Dies sind die drei Keywords, die im Active Directory-LDAP hauptsächlich
verwendet werden. Prinzipiell sind jedoch beliebige Keywords denkbar. Andere
Verzeichnissysteme verwenden dementsprechend auch oft andere Keywords für
ihre Container-Objekte:
l: Location (Standort)
o: Organisation
st: Staat/Provinz/Bundesland
c: Country
Oft wird "Organisation" (O) als oberste Ebene eines nicht-AD-Directory
Systems verwendet anstatt die DC-Keywords, die im Active Directory stets die oberste
Ebene repräsentieren.
Komplette LDAP-Pfade
Oft muss nicht nur der Distinguished Name (DN) eines Verzeichnis-Objektes angegeben werden, sondern ein kompletter LDAP-Pafdname in Form einer URL (Unified Ressource Locator). Hier kommt die Angabe des Protokolls LDAP und der Name des Servers, zu dem man sich verbindet, hinzu:
LDAP://server/distinguished-name
Der Server ist dann derjenige, zu dem die LDAP-Verbindung aufgebaut wird. Wenn der Servernamen weggelassen wird, dann ist stets der eigene, lokale Rechner gemeint. Beispiele:
LDAP://cn=George Mallory,ou=Bergsteiger,dc=himalaya,dc=net
LDAP://everest.himalaya.net/cn=George Mallory,ou=Bergsteiger,dc=himlaya,dc=net
Hier lässt sich auch ein NetBIOS-Name verwenden:
LDAP://EVEREST/cn=George Mallory,ou=Bergsteiger,dc=himalaya,dc=net
Auch IP-Adressen sind möglich:
LDAP://192.168.57.3/cn=George Mallory,ou=Bergsteiger,dc=himlaya,dc=net
Normalerweise wird eine LDAP-Verbindung auf TCP-Port 389 aufgebaut. Sollte der Server seine LDAP-Dienste unter einem anderen Port zur Verfügung stellen, dann läßt sich dies wie in anderen URL-Formen gewohnt beim Server-Namen mit angeben:
LDAP://everest.himalaya.net:390/cn=George Mallory,ou=Bergsteiger,dc=himalaya,dc=net
LDAP://EVEREST:390/cn=George Mallory,ou=Bergsteiger,dc=himalaya,dc=net
LDAP://192.168.57.3:390/cn=George Mallory,ou=Bergsteiger,dc=himalaya,dc=net
Auf diese Weise kann man z.B. den Global Catalog abfragen, der unter TCP-Port 3268 von entsprechend konfigurierten Active Directory Domänen-Controllern zur Verfügung gestellt wird:
LDAP://everest:3268/dc=himalaya,dc=net
Speziell bei der LDAP-Verbindung zu Active Directory Domänen-Controllern kann man hier auch alternativ folgenden LDAP-Pfad verwenden:
GC://everest/dc=himalaya,dc=net
Spezielle Zeichen im Distinguished Name
Die meisten modernen LDAP-Server können gut mit Sonderzeichen aus dem ASCII-Zeichensatz umgehen. Für den Aufbau eines Distinguished Names gelten trotzdem die folgenden Einschränkungen:
1. Wenn Objekte (RDN-Namen) mit einem Leerzeichen beginnen oder enden sollen, so muss dieses Leerzeichen mit einem führenden Backslash "\" markiert werden.
2. Sollen die folgenden Zeichen in einem Objektnamen vorkommen, so müssen
Sie mit ebenfalls mit einem führenden Backslash "\" markiert
werden.
, + " \ < > ; =
3. Wenn Objektenamen mit "#" beginnen sollen, so muss dieses mit einem führenden Backslash "\" markiert werden. Speziell bei Active Directory Domänen-Controllern oder ADAM-Servern tritt häufig der Effekt auf, dass vom System auch innerhalb des Objektnamens die "#"-Zeichen mit führendem "\" markiert werden. Wichtig ist jedoch die Markierung eigentlich nur am Anfang des Namens, da moderne LDAP-Server auch eine Syntax aktzeptieren, in der mit einem führenden "#" der Name in Hexadezimal-Codes angegeben wird.
4. Zusätzlich dazu kann jeder Buchstabe durch seinen UTF8-Wert ausgedrückt werden, und zwar indem er mit einem führenden Backslash vor jedem Einzelbyte geschrieben wird. So können Sie in Umgebungen, wo der LDAP Server keine reinen UTF-8 Strings für Distinguished Names zuläßt, trotzdem auf einfache Weise jedes beliebige Zeichen für Ihre Objektnamen verwenden. In Active Directory Umgebungen benötigen Sie diese spezielle Schreibweise nicht, denn hier können direkt UTF-8 String mit Sonderzeichen für Distinguished Names verwendet werden.
Hier sind einige Beispiele für UTF-8 kodierte Sonderzeichen:
Character |
UTF-8 Hex Representation for other LDAP environments |
ä | \79 |
, | \2C |
\ | \5C |
® | \C2\AE |
½ | \C2\BD |
Ω | \CE\A9 |
€ | \E2\82\AC |
Ein paar Beispiele für Sonderzeichen in Distinguished Names:
Diese Objekte haben folgenden Distinguished Names:
cn=\ Balrog, ou=LOTR,dc=cerrotorre,dc=de
cn=\#G#o#l#u#m#,ou=LOTR,dc=cerrotorre,dc=de
cn=Blanchet\, Cate,ou=LOTR,dc=cerrotorre,dc=de
cn=Jackson\, Peter,ou=LOTR,dc=cerrotorre,dc=de
cn=Lee\, Christopher \<Saruman\>,ou=LOTR,dc=cerrotorre,dc=de
cn=McKellen\, Ian \+\+Gandalf\+\+,ou=LOTR,dc=cerrotorre,dc=de
Active Directory Domänen-Namen im LDAP-Pfad
Nochmals zur Verdeutlichung: Da Domänen im Microsoft-Verzeichnis nach wie vor eine große Rolle spielen, und sich im Active Directory Domänen-Namen nach dem DNS-System richten müssen, verwendet Microsoft hier eine spezielle Methode zur Abbildung der DNS-Domänen-Namen auf X.500-konforme LDAP-Pfadnamen. Dabei werden die einzelnen Bestandteile eines Domänen-Namens in einzelne dc-Einzelteile aufgesplittet. Wenn Sie also ein Objekt in der Domäne emea.support.kashmir.net bezeichnen wollen, so lautet der Distinguished Name z.B. so:
cn=K2,ou=DivisionA,dc=emea,dc=support,dc=kashmir,dc=net
Active Directory Container
Vorsicht: Nicht alle Container innerhalb einer Active Directory Domäne sind OU-Objekte. Teilweise verbergen sich auch CN-Objekte dahinter. Dies gilt vor allem für die Domänen-Container "Users", "Computers", und "Builtin".
Es heißt also nicht:
cn=Administrator,ou=Users,dc=firma,dc=de (falsch!!)
sondern
cn=Administrator,cn=Users,dc=firma,dc=de (richtig!!)
Zu erkennen ist dieser Unterschied im Tool "AD User und Computer" an dem Icon für den Container:
OU-Container
CN-Container
Spezielle Pfadnamen für Exchange 5.5
Bei Exchange 5.5-Verzeichniszugriffen muß man einen etwas veränderten LDAP-Pfadnamen verwenden. Die oberste Hierarchie stellt dort die Exchange-Organisation dar und nicht eine Domäne. Dann folgt die Angabe der Exchange 5.5-Site, in dem sich das Objekt befindet. Danach folgen Recipient- oder Configuration-Container und entsprechende Objekte.
Dabei gilt die Namensregel: cn=Object,cn=Container,cn=Container,ou="Site-Name",o="Organisation"
Ein Beispiel:
Das Postfach "Administrator" hätte hier folgenden Distinguished Name:
cn=Administrator,cn=Recipients,ou=Site-One,o=MAIL55
und den LDAP-Pfadnamen
LDAP://KAMET/cn=Administrator,cn=Recipients,ou=Site-One,o=MAIL55
Vorsicht: Entscheidend ist nicht der Objekt-Name, der in der Verwaltung angezeigt wird (z.B. "Empfänger"), sondern der Verzeichnisname:
Auch Objekte der Exchange 5.5-Konfiguration lassen sich über LDAP ansprechen.
Die Priv-Datenbank hätte hier folgenden Distinguished Name:
cn=Microsoft Private MDB,cn=KAMET,cn=Servers,cn=Configuration,ou=Site-One,o=MAIL55
Auch hier spielen wieder die Verzeichnisnamens-Attribute der Objekte eine Rolle.
Spezielle Pfadnamen für eDirectory / NDS
In Novell eDirectory Umgebungen (früher NDS: Novell Directory Services) bildet man die LDAP-Pfadnamen, indem man einfach vom Organisationsnamen ausgeht - der Name des eDirectory Trees spielt hier keine Rolle. Die oberste LDAP-Hierarchie ist also stets der Organisationsnamen (Keyword "o=") - danach einfach alle Organizational Units (Keyword "ou=") durchgehend bis zu eigentlichen Objekt. Ein Beispiel:
Der User "admin" in der OU "server" in der Organisation "cerrotorre" im Tree "HIMTREE" hat folgenden Distinguished Name:
o=cerrotorre,ou=server,cn=admin