Printout Header
RSS Feed

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
Komplette LDAP-Pfade
Spezielle Zeichen im Distinguished Name
Active Directory Domänen-Namen im LDAP-Pfad
Active Directory Container
 
Spezielle LDAP-Pfadnamen für Exchange 5.5
Spezielle LDAP-Pfadnamen für Novell eDirectory / NDS



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


AUC Screenshot

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:


AUC Screenshot

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


AUC Screenshot

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-Icon OU-Container

CN-Icon 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:


ExAdmin Screenshot

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:


ExAdmin Screenshot

Auch Objekte der Exchange 5.5-Konfiguration lassen sich über LDAP ansprechen.


ExAdmin Screenshot

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:


Console One Screenshot


Der User "admin" in der OU "server" in der Organisation "cerrotorre" im Tree "HIMTREE" hat folgenden Distinguished Name:


o=cerrotorre,ou=server,cn=admin


Tweet