LDAP Verzeichnisobjekte erzeugen
Um verschiedene Objekte zu erzeugen, verbindet man sich einfach mit dem Verzeichnis-Container, in dem die neuen Objekte enthalten sein sollen, und verwendet dort die Container-Funktion create(). Diese erfordert die Angabe der Objektklasse des neuen Objekts und dessen Relative Distinguished Name (RDN). Außerdem müssen je nach Objektklasse evtl. zwingend vorgeschriebene Attribute gesetzt sein, ansonsten kann das Objekt nicht oder nicht sinnvoll erzeugt werden.
Beispiele für Active Directory und Exchange (ab Exchange 2000):
Organizational Units erzeugen | |
User erzeugen | Mail-User erzeugen |
Kontakte erzeugen | Lokale Gruppen erzeugen |
Globale Gruppen erzeugen | Universelle Gruppen erzeugen |
Beispiele für Novell eDirectory (NDS):
Organizational Units erzeugen | ZEN Application Objects erzeugen |
User erzeugen | Gruppen erzeugen |
Organizational Unit erzeugen
Um eine Active Directory Organizational Unit zu erzeugen, verbindet man sich zuerst mit dem Verzeichnis-Container, in dem erzeugt werden soll. Dies kann entweder eine Domänen-Objekt sein oder eine andere OU.
User erzeugen
Um einen Active Directory User zu erzeugen, muss man die Objektklasse "user" verwenden und dann mindestens das Attribut "sAMAccountName" (Windows NT-Anmeldename) setzen:
Der Benutzer wird übrigens als deaktivierter Benutzer ohne Passwort erstellt. Evtl. bestehende Passwort-Richtlinien (Minimale Passwort-Länge oder Komplexitätsanforderungen) werden nicht beachtet. Um den Account gleichzeitig zu aktivieren, muss man ein entsprechende Flag im Attribut userAccountControl setzen:
Dies wird in vielen Fällen fehlschlagen, denn nach wie vor wird er Account auf diese Weise mit leerem Passwort angelegt und dies dürfte in den meisten Domänen durch entsprechende Passwort-Richtlinien verboten sein. Jedoch ist es schwierig, dem Account gleich beim Anlegen ein Passwort zu vergeben. Also legen wir ihn mit einem userAccountControl-Flag an, dass für diesen User eine leeres Passwort erlaubt. Dieses Flag wird nach dem Setzen eines Passwortes wieder gelöscht:
Nähere Infos zu den betreffenden LDAP-Attributen oder für das Setzen weiterer Eigenschaften des Objektes erhalten Sie im Abschnitt "Attribute für Active Directory User" hier im SelfADSI Tutorial.
Mail-User erzeugen (Exchange 2000 / Exchange 2003)
Um in einer Exchange Organisation (Exchange 2000/2003) einen Mail-enabled User zu erzeugen, muss man die Objektklasse "user" verwenden und dann mindestens die Attribute "sAMAccountName" (Windows NT-Anmeldename), "mailNickName" (Exchange Alias), "displayName" (Anzeigename) und "homeMDB" (Informationsspeicher des Postfaches) setzen.
Dabei muss man den genauen Distinguished Name des Informationsspeichers bilden, der sich aus den Namen der Organisation des Exchange-Servers, der Storage Group und der Datenbank selbst zusammensetzt.
Das Postfach dieses Benutzers wird im Exchange System Manager (ESM) solange nicht angezeigt, bis die erste Mail darin landet. Der Benutzer wird übrigens als deaktivierter Benutzer ohne Passwort erstellt. Evtl. bestehende Passwort-Richtlinien (Minimale Passwort-Länge oder Komplexitätsanforderungen) werden nicht beachtet. Um den Account gleichzeitig zu aktivieren, muss man ein entsprechende Flag im Attribut userAccountControl setzen:
Dies wird in vielen Fällen fehlschlagen, denn nach wie vor wird er Account auf diese Weise mit leerem Passwort angelegt und dies dürfte in den meisten Domänen durch entsprechende Passwort-Richtlinien verboten sein. Jedoch ist es schwierig, dem Account gleich beim Anlegen ein Passwort zu vergeben. Also legen wir ihn mit einem userAccountControl-Flag an, dass für diesen User eine leeres Passwort erlaubt. Dieses Flag wird nach dem Setzen eines Passwortes wieder gelöscht:
Nähere Infos zu den betreffenden LDAP-Attributen oder für das Setzen weiterer Eigenschaften des Objektes erhalten Sie im Abschnitt "Attribute für Active Directory User" hier im SelfADSI Tutorial.
Kontakte erzeugen
Um einen Mail-enabled Kontakt in einer Exchange-Organisation (Exchange 2000 aufwärts) zu erzeugen, muss man die Objektklasse "contact" verwenden und dann mindestens die Attribute "mailNickName" (Exchange Alias), "displayName" (Anzeigename) und "targetAddress" (externe Mail-Adresse) setzen (dies ist der Windows NT-Anmeldename):
Nähere Infos zu den betreffenden LDAP-Attributen oder für das Setzen weiterer Eigenschaften des Objektes erhalten Sie im Abschnitt "Attribute für Active Directory Kontakte" hier im SelfADSI Tutorial.
Lokale Gruppen erzeugen
Um eine lokale Active Directory Gruppe zu erzeugen, muss man die Objektklasse "group" verwenden und dann mindestens die Attribute "sAMAccountName" (dies ist der abwärtskompatible Windows NT-Name) und "groupType" (GruppenTyp/-Bereich) setzen:
Um eine lokale Verteiler-Gruppe innerhalb einer Exchange Organisation (Exchange 2000 aufwärts) zu erzeugen, muss man die Objektklasse "group" verwenden und dann mindestens die Attribute "sAMAccountName" (dies ist der abwärtskompatible Windows NT-Name), "mailNickName" (Exchange Alias), "displayName" (Anzeigename)" und groupType" (GruppenTyp/-Bereich) setzen:
Wenn man möchte, dass aus der Gruppe eine Security-Gruppe wird, die sowohl Berechtigungen erhalten als auch Mail empfangen kann, so setzt man hier den Gruppentyp einfach so:
Nähere Infos zu den betreffenden LDAP-Attributen oder für das Setzen weiterer Eigenschaften
des Objektes erhalten Sie im Abschnitt "Attribute für Active Directory Gruppen" hier
im SelfADSI Tutorial.
Globale Gruppen erzeugen
Um eine globale Active Directory Gruppe zu erzeugen, muss man die Objektklasse "group" verwenden und dann mindestens die Attribute "sAMAccountName" (dies ist der abwärtskompatible Windows NT-Name) und "groupType" (GruppenTyp/-Bereich) setzen:
Um eine globale Verteiler-Gruppe innerhalb einer Exchange Organisation (Exchange 2000 aufwärts) zu erzeugen, muss man die Objektklasse "group" verwenden und dann mindestens die Attribute "sAMAccountName" (dies ist der abwärtskompatible Windows NT-Name), "mailNickName" (Exchange Alias), "displayName" (Anzeigename)" und groupType" (GruppenTyp/-Bereich) setzen:
Wenn man möchte, dass aus der Gruppe eine Security-Gruppe wird, die sowohl Berechtigungen erhalten als auch Mail empfangen kann, so setzt man hier den Gruppentyp einfach so:
Nähere Infos zu den betreffenden LDAP-Attributen oder für das Setzen weiterer Eigenschaften
des Objektes erhalten Sie im Abschnitt "Attribute für Active Directory Gruppen" hier
im SelfADSI Tutorial.
Universelle Gruppen erzeugen
Um eine universelle Active Directory Gruppe zu erzeugen, muss man die Objektklasse "group" verwenden und dann mindestens die Attribute "sAMAccountName" (dies ist der abwärtskompatible Windows NT-Name) und "groupType" (GruppenTyp/-Bereich) setzen:
Um eine universelle Verteiler-Gruppe innerhalb einer Exchange Organisation (Exchange 2000 aufwärts) zu erzeugen, muss man die Objektklasse "group" verwenden und dann mindestens die Attribute "sAMAccountName" (dies ist der abwärtskompatible Windows NT-Name), "mailNickName" (Exchange Alias), "displayName" (Anzeigename)" und groupType" (GruppenTyp/-Bereich) setzen:
Wenn man möchte, dass aus der Gruppe eine Security-Gruppe wird, die sowohl Berechtigungen erhalten als auch Mail empfangen kann, so setzt man hier den Gruppentyp einfach so:
Nähere Infos zu den betreffenden LDAP-Attributen oder für das Setzen weiterer Eigenschaften
des Objektes erhalten Sie im Abschnitt "Attribute für Active Directory Gruppen" hier
im SelfADSI Tutorial.
Organizational Unit im eDirectory erzeugen
Um eine Organizational Unit im eDirectory zu erzeugen, verbindet man sich zuerst mit dem Container, in dem erzeugt werden soll. Es kann sich dabei entweder um ein Organisations-Objekt, eine andere OU, ein Locality-Objekt oder eine Domain handeln. Es müssen keinerlei Pflichtattribute gesetzt werden.
Beachten Sie hier den Unterschied zur Erzeugung von Objekten in Active Directory Umgebungen: Es wird hier explizit die Eigenschaft "objectClass" gesetzt. Dies ist jedoch nicht immer notwendig, je nach eDirectory-Version kann die vorletzte Code-Zeile dann auch weggelassen werden. Um Fehler zur vermeiden, sollte die Objektklasse bei eDirectory-Objekten jedoch immer explizit gesetzt werden.
User im eDirectory erzeugen
Um einen eDirectory User zu erzeugen, muss man die Objektklasse "inetOrgPerson" verwenden und dann mindestens das Attribut "sn" (Nachname) setzen:
Beachten Sie hier den Unterschied zur Erzeugung von Objekten in Active Directory Umgebungen: Es wird hier explizit die Eigenschaft "objectClass" gesetzt. Dies ist jedoch nicht immer notwendig, je nach eDirectory-Version kann die vorletzte Code-Zeile dann auch weggelassen werden. Um Fehler zur vermeiden, sollte die Objektklasse bei eDirectory-Objekten jedoch immer explizit gesetzt werden.
Gruppen im eDirectory erzeugen
Um eine eDirectory Gruppe zu erzeugen, kann man die Objektklassenbezeichnungen "group", "groupOfNames" oder auch "groupOfUniqueNames " verwenden. Es handelt sich hierbei um gleichwertige Synonyme der selben Objektklasse. Es müssen keinerlei Pflichtattribut gesetzt werden.
Beachten Sie hier den Unterschied zur Erzeugung von Objekten in Active Directory Umgebungen: Es wird hier explizit die Eigenschaft "objectClass" gesetzt. Dies ist jedoch nicht immer notwendig, je nach eDirectory-Version kann die vorletzte Code-Zeile dann auch weggelassen werden. Um Fehler zur vermeiden, sollte die Objektklasse bei eDirectory-Objekten jedoch immer explizit gesetzt werden.
ZEN Application Objects im eDirectory erzeugen
Um ein ZEN Application Object zu erzeugen, muß man die Objectklasse "appApplication" verwenden und mindestens die Attribute "appCaption" und "appPath" setzen. Es handelt sich dabei um die Beschreibung der Applikation und den Aufruf-Pfad des betreffenden Programms:
Beachten Sie, dass wir hier ganz offiziell die Put-Methode benutzen müssen und nicht mehr einfach die Attribute als Objekt-Property setzen können. Der Aufruf app.appCaption = "AppControl 1.0" hätte also einen Laufzeitfehler ergeben. Der Grund liegt darin, dass die Attribute appCaption und appPath einen Provider-Spezifischen Typ aufweisen und keine Standard-Strings sind.
In unserem Beispiel habe ich übrigens den Pfad zur ausführbaren Datei leer gesetzt - dazu muss man den String " 47 NULL " als Wert einsetzen.