Einführung in LDAP Doris Jung 27. Mai 2001 1 LDAP Protokoll LDAP ist ein Netz Protokoll, ein erweiterbares Directory Access Protokoll, also eine Sprache in der Klient und Server miteinander kommunizieren können. Dies geschieht, indem der Klient eine Anfrage (request) an den Server sendet. Dieser empfängt die Anfrage und veranlasst die entsprechende Aktion (sofern der Klient die Rechte dazu hat). Dann wird das Ergebnis (result) vom Server an das Klientenprogramm zurückgeschickt. Dies ist z.b. interessant, damit Aufgaben Rechnern zugewiesen werden können, die für diese optimiert sind. LDAP ist message-basiert. Deshalb sind multiple Anfragen gleichzeitig möglich: Der Klient generiert pro Anfrage eine eindeutige Message-ID. Die Ergebnisse sind mit genau dieser Message-ID versehen, wenn sie vom Server zurückgeschickt werden. Hierdurch ist die richtige Zuordnung zu den Anfragen möglich. (Allerdings wird dies vom LDAP SDK (Software Development Kit) gelöst und muß somit nicht vom Programmierer berücksichtigt werden.) Bei LDAP handelt es sich um ein Lightweight Protocol, das laut seiner Entwickler effizient und funktionell arbeitet, sowie einfach zu implementieren ist. Es gibt die Versionen LDAPv2 und LDAPv3, welche mittlerweile weit verbreitet eingesetzt werden. Deshalb ist LDAPv3 als Internet Standard vorgeschlagen. Es läuft direkt auf TCP/IP, was fast überall implementiert ist (UNIX, Windows, DOS, Apple) oder werden kann. 1
Vorteile von LDAP: Zentrale Verwaltung von Usern, Gruppen, Peripheriegeräten etc. Es wird keine eigene Verwaltung für jede einzelne Anwendung benötigt. Unabhängigkeit von einzelnen Firmen oder Plattformen. (Manche Firmen bieten zentrale Verwaltungen an, die einen dann aber an Software dieser Firma binden.) Sparen von Zeit bei der Softwareentwicklung, da keine eigene User-, Gruppenmanagment-Datenbank für die Software entwickelt werden muß. Nachteile von LDAP: Für manche Problemstellungen ist LDAP ein zu umfangreiches System, d.h. der Arbeitsaufwand wird durch LDAP erhöht anstatt ihn zu senken. LDAP Protokoll Operationen: (Neun Basis Operationen) Frage-Operationen: search, compare. Update-Operationen: add, delete, modify, modify DN (modify distinguished name also: rename). Authentication- und Control-Operationen: bind, unbind, abandon. (Diese Operationen werden im LDAP Functional Model genauer beschrieben.) Erweiterbare Operationen: LDAP Extended Operations: Man hat die Möglichkeit neue Operationen zu definieren. Bsp.: StartTLS (Klient möchte Authentication über Transport Layer Security vornehmen.) LDAP Controls: Mit diesen Operationen kann das Verhalten von existierenden Operationen verändert werden. Simple Authentication und Security Layer: Es handelt sich um ein Framework das multiple Authentication-Methoden unterstützt. 2
LDAP benutzt LBER (lightweight basic encoding rules) als Codierung, was nicht textbasiert ist wie z.b. HTTP. Man braucht deshalb Klient- Bibliotheken, die einem ermöglichen, sich textbasiert via eines TCP Ports einzuloggen (wie z.b. bei SMTP). 2 Modelle Der LDAP Standard definiert 4 Modelle, die im Wesentlichen den Datenbankentwurf eines Directories in logische Einheiten unterteilt: 2.1 Information Model Definiert Datentypen und Grundeinheiten der Informationen, die im Verzeichnis gespeichert werden sollen. Grundeinheit: entry Besteht aus einer Menge von Attributen. Attribute: Haben einen Typ und dürfen einen oder mehrere Werte annehmen. Normale Attribute und operational Attribute: Normale Attribute: Können vom User modifiziert werden. Operationale Attribute: Verwaltung durch System. Z.B. modifytimestamp (zeigt an wann ein Eintrag zuletzt verändert wurde.) Attribute können Bedingungen (constraints) haben. Werte erlaubt oder nicht, Größeneinschränkungen.) (Z.B. Multiple Directory schemas: Auch dies sind Bedingungen an die Werte der Attribute. (Darf z.b. ein Attribut ohne Wert sein oder nicht?) 2.2 Naming Model Definiert wie man Daten organisiert und sie referenziert. Einträge sind wie beim UNIX-Datei System in einer Baumstruktur organisiert. Es gibt aber Unterschiede: 3
1. Kein root entry, denn dieser ist konzeptuell (root DSE), enthält Server Informationen. 2. Knoten bei LDAP können Attribute und Kinder haben, also ein Verzeichnis sein und gleichzeitig Attributinformationen tragen. 3. Benennung anders herum als bei UNIX. Namen müssen eindeutig sein: Deshalb muß RDN (relative distinguished name - der linkeste Teil des Namens) innerhalb einer Ebene eindeutig sein. Echte Kommas in Namen müssen einen backslash bekommen: Widgets, Ltd. Widgets\, Ltd. (Gilt auch für weitere Zeichen.) Aliase: Eintrag kann auf anderen Verweisen. Wie symbolic links bei UNIX. 2.3 Functional Model Beschreibung der möglichen Operationen. Mit entsprechenden Parametern. Bsp.: Search hat 8 Parameter: 1. base: Wo wird gesucht? 2. scope: Wie tief wird gesucht? 3.... Es gibt verschiedene Suchfilter: Equality Filter, Substring Filters (Suche mit Wildcards), Approximation filters (sucht nach ähnlich klingenden Werten), Greater Than or Equal To und Less Than or Equal To Filter, Presence Filter, Extensible Matching (neue matching-rules können implementiert werden), Negation z.b. (!(sn = Smith)), Kombinierte Filter & (und) (oder) Präfix-Notation!! ( (sn = Smith)(sn = Jones)). 4
Spezifizierung der Ergebnisrückgabe möglich. Bei Update Operationen werden bestimmte Bedingungen gestellt, damit Update erfogreich abgeschlossen wird. (Z.B. delete: Eintrag muss existieren, darf keine Kinder haben, Zugriff-Kontrolle mu Zugriff gestatten.) 2.4 Security Model Framework, um Informationen im Vezeichnis vor unauthorisiertem Zugriff zu schützen. Einfache Authentication: Benutzer schickt über Klienten einen dn (distinguished name) und das dazugehörige Password. Der Server sucht den Eintrag aus dem Verzeichnis heraus und authentiziert den Client, wenn das gegebene Passwort richtig ist. Binding Operation Hierraufhin werden dem User bestimmte Rechte gegeben oder entzogen. SSL (Secure Socket Layer) und TSL (Transport Layer Security) sind Konzepte, um Daten zu verschlüsseln. TSL Internet Standard von LDAPv3 unterstützt. Leider bietet LDAP kein allgemeines Access Control Model (Art und Weise wie Zugriffsrechte beschrieben werden), sondern nur spezielle in individuellen Implementationen. 3 API (Application Programming Interface) Älteste ist für C - ursprünglich U-M Dstribution. (Mittlerweile gibt es auch andere), Java SDK (Software Development Kit), PerLDAP, Proprietär: SunSoft s JNDI, Active Directory Services Interface (AD- SI). 5
Asynchrone und synchrone Schnittstellen. Synchron: Weitere API Calls sind blockiert, während die an das Verzeichnis geleitete Anfrage bearbeitet wird. LDAP API stellt Routinen zur Weiterbearbeitung der Ergebnisse zur Verfügung. 4 LDIF (LDAP Data Interchange Format) Textbasiertes Format zum Beschreiben von Directory Informationen, d.h. von Directory Einträgen und einer Sammlung von Updates auf einem Verzeichnis. Zum Ex- und Importieren von Daten in ein Verzeichnis auf einem Server. Ein Eintrag besteht aus 2 Teilen: DN (distinguished name) und Attributliste. Zeile darf umgebrochen werden. Einträgen, die nicht in ASCII sind müssen in base 64 geschrieben sein - gekennzeichnet durch zwei Doppelpunkte. LDAP unterstützt multiplie Sprachen durch den Gebrauch von UTF-8 (Unicode Transformation Format), kompatible mit ASCII. Howes, Timothy A. u.a.: Understanding and Deploying LDAP Directory Services. Kapitel 3. Macmillan Technical Publishing. USA, 2001. 6