Zunächst prüfen wir, ob der Zugriff auf unseren neuen LDAP Server auch funktioniert. Ein praktischer LDAP-Client ist z.B. JXplorer, den man kostenlos von http://www.jxplorer.org/ downloaden kann.

Die Default Einstellungen, die wir gerade konfiguriert haben, erlauben den anonymen Lese-Zugriff, wir brauchen also vorerst kein Passwort. Es reicht, den Servernamen und den Port anzugeben (der Port 389 ist der offizielle LDAP Port).

Wenn der LDAP Server läuft, sollte JXplorer in etwa das obige Bild darstellen. Durch Klicken auf die einzelnen Einträge in der Baumansicht kann man sich weitere Details anzeigen lassen.

Ein Eintrag in einem LDAP Directory wird durch seinen DN (Distinguished Name) identifiziert. Der "admin"-Eintrag in obigem Screenshot hat den DN "cn=admin,dc=schirmacher,dc=de". Um den DN herauszufinden, muss man sich in der Hierarchie von unten nach oben durchklicken und sich jeweils den blau hervorgehobenen Attribut-Typ sowie dessen Wert notieren.

Jeder Eintrag kann beliebig viele object classes enthalten, die ihrerseits unterschiedliche attributes enthalten. Dabei kann ein bestimmtes Attribut, z.B. "cn (common name)", durchaus in verschiedenen Objektklassen enthalten sein. Es ist so möglich, die benötigten Felder in einem Eintrag ganz nach Bedarf durch Kombinieren von vordefinierten Objektklassen zusammenzustellen. Ein Eintrag hat auch stets einen Parent DN (übergeordneten Eintrag). Auf diese Weise kann man beliebige Hierarchien aufbauen.

Der "admin" Eintrag hat z.B. die Objektklassen "simpleSecurityObject" sowie "organizationalRole". Die erste Klasse definiert das Attribut "userPassword", die zweite alle anderen Attribute. Fett dargestellte Attribute sind Pflichtfelder.

Neue Einträge mit JXplorer anlegen und bearbeiten

Wir wollen nun ein paar neue Einträge anlegen. Dazu müssen wir uns zunächst als Administrator einloggen, und zwar mit dem DN "cn=admin,dc=schirmacher,dc=de" sowie dem dazugehörigen Passwort. Übrigens kann man sich alle Angaben (bis auf das Passwort) auch abspeichern.

Durch Rechtsklick auf einen Eintrag kann man diesem Eintrag einen weiteren hinzufügen. Daher klicke ich auf "schirmacher", dann auf "Neu" und wähle die gewünschten Objektklassen. Der Eintrag soll Informationen über eine Person enthalten, wie Name, Login, Passwort, Telefonnummer usw. Die geeigneten Objektklassen sind "person" oder "inetOrgPerson" (enthält mehr Attribute). Nach Klick auf den "OK"-Button zeigt der JXplorer einen neuen Eintrag vom gewünschten Typ an.

Hinweis: Dieser Eintrag ist noch nicht im LDAP-Server gespeichert! Falls man auf einen anderen Eintrag in der Baumansicht klickt, geht der neue Eintrag verloren.

Nun kann man alle gewünschten Felder ausfüllen und die Daten zum LDAP Server senden. Alle fett dargestellten Attribute sind Pflichtfelder und müssen in jedem Fall ausgefüllt werden. Durch Klick auf den "Abschicken"-Button werden die Daten zum LDAP-Server gesendet und sind dauerhaft gespeichert.

Auf dieselbe Art und Weise lassen sich vorhandene Einträge auch ändern.

Dieses LDAP-Verzeichnis ist defaultmäßig so konfiguriert, dass ein Benutzer Lese-Zugriffe auf alle anderen Einträge sowie den Schreibzugriff auf seinen eigenen Passwort-Eintrag (aber nicht auf die sonstigen Daten) hat. Dazu muss er sich mit seinem eigenen DN anmelden, in diesem Fall also "cn=arne schirmacher,dc=schirmacher,dc=de". Die Groß- und Kleinschreibung ist übrigens für die Anmeldung nicht relevant. Auch Umlaute und Leerzeichen stellen kein Problem dar.

Wir legen jetzt noch ein paar weitere Einträge an, die für die folgenden Experimente benötigt werden.

Sinnvolle Struktur definieren

Der Debian Installer gibt als Base DN des Directories den Domain Namen vor. Man kann natürlich auch beliebige andere wählen, für eine kleine Firma könnte man z.B. die Objektklasse "organization" wählen: "o=Meine GmbH".

Für die Mitarbeiter sollte man eine eigene Hierarchie aufbauen, z.B. die Objektklasse "organizationalUnit": "ou=people", in der dann die Einträge abgelegt sind.

Es hat sich bewährt, für Funktionsuser (z.B. den Administrator, einen Read-Only-User) ebenfalls eine separate Hierarchie anzulegen. In diesem Beispiel heißt sie "specialaccounts".

Berechtigungen definieren

Mit LDAP kann man Zugriffsrechte sehr fein einstellen. In diesem Beispiel eines Firmen-LDAP-Servers gibt es folgende Policy:

  • Anonyme User (ohne Login) haben überhaupt keinen Zugriff
  • Jeder angemeldete User hat Lesezugriff auf alle anderen Einträge, und Schreibzugriff auf seinen eigenen Eintrag
  • Der Admin-User hat Schreibzugriff auf alle Einträge