Ldap

Ldap
LDAP im TCP/IP‑Protokollstapel:
Anwendung LDAP
Transport UDP TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI


Das Lightweight Directory Access Protocol (LDAP) [ˈlaɪtweɪt …] ist ein Anwendungsprotokoll aus der Computertechnik. Es erlaubt die Abfrage und die Modifikation von Informationen eines Verzeichnisdienstes (eine im Netzwerk verteilte hierarchische Datenbank) über das TCP/IP-Netzwerk. Die aktuelle Version ist in RFC 4511 spezifiziert.

Inhaltsverzeichnis

Überblick

LDAP basiert auf dem Client-Server-Modell und kommt bei sogenannten Verzeichnisdiensten (englisch directories oder directory services) zum Einsatz. Es beschreibt die Kommunikation zwischen dem sogenannten LDAP-Client und dem Verzeichnis-(Directory-)Server. Aus einem solchen Verzeichnis können objektbezogene Daten wie zum Beispiel Personendaten oder Rechnerkonfigurationen ausgelesen werden. Die Kommunikation erfolgt auf Basis von Abfragen.

Das Verzeichnis kann beispielsweise ein Adressbuch enthalten: In seinem E-Mail-Client stößt ein Nutzer die Aktion Suche die Mailadresse von Joe User an. Der E-Mail-Client formuliert eine LDAP-Abfrage an das Verzeichnis, das die Adressinformationen bereitstellt. Das Verzeichnis formuliert die Antwort und übermittelt sie an den Client: joe.user@example.org.

Mittlerweile hat sich im administrativen Sprachgebrauch eingebürgert, dass man von einem LDAP-Server spricht. Damit meint man einen Directory-Server, dessen Datenstruktur der LDAP-Spezifikation entspricht und der über das LDAPv3-Protokoll Daten austauschen kann.

Das Protokoll bietet alle Funktionen, die für eine solche Kommunikation notwendig sind: Anmeldung am Server (bind), die Suchabfrage (Suche mir bitte alle Informationen zum Benutzer mit dem Namen 'Joe User') und die Modifikation der Daten (Ändere das Passwort beim Benutzer Joe User).

Neuere Implementierungen, die über RFC 2251 hinausgehen und Gegenstand für eine mögliche Erweiterung des Protokolls sind, berücksichtigen die Replikation der Daten zwischen verschiedenen Verzeichnissen.

Geschichte

LDAP wurde an der Universität von Michigan (UMich) entwickelt und 1993 erstmals im RFC 1487 vorgeschlagen. Gleichzeitig stellte die UMich die erste Serverimplementierung vor, die heute als „UMich-LDAP“ bekannt ist. Das LDAP ist eine vereinfachte Alternative zum Directory Access Protocol (DAP), das als Teil des X.500-Standard spezifiziert ist. Der X.500-Standard ist sehr umfangreich und setzt auf einem vollständigen ISO/OSI-Stack auf, was die Implementierung schwierig und hardwareintensiv machte. LDAP wurde mit dem Ziel entwickelt, Verzeichnisdienste einfacher und somit populärer zu machen. LDAP setzt auf einem TCP/IP-Stack auf und implementiert nur eine Auswahl der DAP-Funktionen und Datentypen. Dadurch ließ sich LDAP auch auf Arbeitsplatzrechnern der frühen neunziger Jahre implementieren und gewann eine breite Anwendungsbasis.

LDAP und X.500

X.500 erfordert eine strenge Implementierung der Verzeichnisdaten und besitzt mit DAP einen größeren Funktions- und Kontrollumfang als LDAP. Dies behinderte die breitere Verteilung in vielen Unternehmen. Die Entscheidung, eine „Lightweight“-Version des DAP-Protokolls zu implementieren, führte zu einer hohen Flexibilität in den Netzwerken, so dass solche Verzeichnisse zum ersten Mal „Internet-tauglich“ wurden.

Funktionsweise

LDAP-Directory-Eintrag

Um eine Übersicht über die Funktionsweise einer LDAP-Architektur zu bekommen, ist es notwendig, dass man zwischen der Organisation des LDAP-Verzeichnisses und dem Protokoll LDAP unterscheidet.

LDAP-Verzeichnis

Die Datenstruktur eines LDAP-Verzeichnisses ist durch einen hierarchischen Baum mit Wurzeln, Zweigen und Blättern gegeben. Die Wurzel (root, suffix) ist das oberste Datenobjekt, unter ihm verzweigen sich die höheren Strukturen. Beispiel: Wird ein LDAP-Verzeichnis in einem Unternehmen mit dem Namen ACME eingesetzt, kann die Organisation als Wurzel definiert werden: o=acme.

Personen können in Zweigen unterhalb dieser Wurzel hinterlegt werden: ou=Personen,o=acme

Gruppen können in anderen Zweigen unterhalb der Wurzel hinterlegt werden: ou=Gruppen,o=acme

Damit die Organisation der Daten nicht willkürlich geschieht, verwendet jedes LDAP-Verzeichnis eine bestimmte, genormte und gegebenenfalls erweiterte Struktur. Die Struktur wird durch das verwendete Schema definiert. Ein LDAP-Schema definiert jeweils Objekt-Klassen mit ihren Attributen, wie zum Beispiel die Klasse person oder die Klasse organisation.

Die Verzeichniseinträge heißen LDAP-Objekte. Jedes Objekt gehört zu mindestens einer, in der Regel aber zu mehreren Klassen. So sind für die Daten einer Person, ihrer E-Mail-Adresse und ihrer Passwörter nicht etwa drei Objekte notwendig, sondern dasselbe Objekt gehört zu drei Klassen. Diese könnten in diesem Beispiel person, inetOrgPerson und posixAccount heißen.

Es gibt drei Arten von Objektklassen: Da ein Objekt zu mindestens einer strukturellen Klasse gehören muss, ist dies die Standardeinstellung. Daneben gibt es noch Hilfsklassen, welche dazu benutzt werden können, verschiedenartigen Objekten gleiche Attribute zuzuweisen. Zu guter Letzt existieren noch abstrakte Basisklassen, von denen keine Objekte, sondern nur untergeordnete Basisklassen erzeugt werden können.

Jedes Objekt ist eigenständig und aus Attributen zusammengesetzt. Ein einzelnes Objekt wird eindeutig durch den Distinguished Name (DN) identifiziert wie zum Beispiel uid=juser,ou=People,ou=webdesign,c=de,o=acme. Dieser setzt sich aus einzelnen Relative Distinguished Names (RDN) zusammen. Eine andere Schreibweise für den DN ist der canonical name, der keine Attribut-Tags wie ou, c und so weiter enthält und bei dem die Trennung zwischen den RDNs durch Schrägstriche erfolgt. Außerdem beginnt die Reihenfolge, im Gegensatz zum dn, mit dem obersten Eintrag, also zum Beispiel acme/de/webdesign/People/juser.

Jedes Attribut eines Objekts hat einen bestimmten Typ und einen oder mehrere Werte. Die Typenbezeichnungen der Attribute sind meist einfach zu merkende Kürzel wie zum Beispiel cn für common name, ou für organizational unit, s für state, c für country oder mail für e-mail address. Die erlaubten Werte eines Attributs sind vom Typ abhängig. So könnte ein mail-Attribut die Adresse hans.wurst@example.com enthalten, ein jpegPhoto-Attribut dagegen würde ein Foto als binäre Daten im JPEG-Format speichern. Die in der Objektklasse definierten Attribute können entweder obligatorisch (mandatory) oder optional sein.

Die Objekte werden in einer hierarchischen Struktur gespeichert, die politische, geographische oder organisatorische Grenzen widerspiegelt. Die größten Einheiten werden an die Spitze des Verzeichnisbaumes gestellt, der sich nach unten immer weiter auffächert. Während Objekte, die selbst Objekte enthalten, als Containerobjekte bezeichnet werden, heißen die „Enden“ des Baumes Blattobjekte.

Baumstruktur der LDAP-Inhalte

Wenn einzelne LDAP-Server für einzelne Teile des Verzeichnisbaumes zuständig sind, spricht man von Partitionen. Stellt ein Client eine Anfrage, für die der Server nicht zuständig ist, kann der Server den Client an einen anderen Server verweisen. LDAP-Server lassen sich redundant aufbauen. Hierzu wird oft eine Master-Slave-Konfiguration verwendet. Versucht ein Client, Daten auf einem Slave-Server zu ändern, wird er an den Master verwiesen. Die Änderungen auf dem Master-Server werden dann an alle Slave-Server weitergegeben.

Da viele verschiedene Schemata in verschiedenen Versionen in Benutzung sind, ist die Vorstellung eines „globalen“ alles umfassenden LDAP-Verzeichnisses nicht real. LDAP-Server werden als zentraler Verzeichnisdienst für verschiedene Zwecke in verschiedenen Größen eingesetzt, die Objekthierarchie bleibt aber in der Regel auf eine Organisation beschränkt.

LDAP-Protokoll

Das LDAP-Protokoll ist ein Protokoll der Anwendungsschicht (Applicationlayer) nach dem für TCP verwendeten DOD 4-Schichtenmodell und arbeitet mittels genau spezifizierter Zugriffs-Prozesse:

  • bind: Mit der bind-Direktive vermittelt man dem Directory-Server über eine dn, wer den Zugriff durchführen möchte (entweder anonym, per Passwort-Authentifizierung oder anders)
  • baseDN: Die BaseDN definiert, wo im Verzeichnisbaum abwärts die Suche nach bestimmten Objekten gestartet werden soll. Diese Suche kann festgelegt werden auf eine Suche über
    • genau dieses Objekt (base)
    • dieses Objekt und alles darunter (sub)
    • eine Ebene unterhalb des BaseDNs (one)

Ansonsten gelten die notwendigen Such-Spezifikationen wie Suchoperator (Beispiel (&(mail=joe*)(ou=People))), Server-Benennung – wie zum Beispiel ldap.acme.com –, Port-Benennung und so weiter.

Beispiel für eine LDAP-Suchanfrage durch ein einfaches Kommandozeilenprogramm:

ldapsearch -h ldap.acme.com -p 389 -s sub -D "cn=Directory Manager,o=acme" -W -b "ou=personen,o=acme" "(&(mail=joe*)(c=germany))" mail

Erklärung: Das Kommandozeilenprogramm kontaktiert über LDAP den Directory-Server ldap.acme.com (Port 389) und meldet sich über den Account des Directory Managers an diesem System an. Die Anfrage zielt auf alle Benutzereinträge (unterhalb des Zweiges ou=personen,o=acme) und sucht nach Personen aus Deutschland, deren Mailadresse mit joe beginnen ((&(mail=joe*)(c=germany))). Werden Personen gefunden, die auf diesen Filter passen, so wird deren Mailadresse zurückgegeben (mail).

Anwendungen

LDAP kommt heutzutage in vielen Bereichen zum Einsatz, beispielsweise:

Unterstützung von LDAP

Viele Anbieter von Verzeichnisdiensten unterstützen LDAP, beispielsweise:

GQ und Luma ermöglichen das direkte Betrachten und Bearbeiten von LDAP-Verzeichnissen.

Der Export und Import erfolgt mittels LDIF.

LDAP und Datenbankmodelle

LDAP agiert als Frontend zu hierarchischen Datenbanken. Diese Form der Datenhaltung ist auf völlig andere Problemstellungen zugeschnitten als das relationale Modell. LDAP an sich ist auch keine Datenbank, sondern lediglich das Protokoll zur Kommunikation.

Potentielle Probleme

  • Keine Normalformen: LDAP agiert als Frontend zu hierarchischen Datenbanken. Diese Struktur erzwingt keine Normalformen, zum Beispiel können multivalued attributes erlaubt sein.
  • Abfragesprache: Von den relationalen Operationen Projektion (Spaltenauswahl), Selektion (Zeilenauswahl), Kreuzprodukt (Join), Spaltenumbenennung (Rename, AS) und Aggregation (GROUP BY) unterstützt LDAP nur Projektion ohne Erzeugung von errechneten Attributen und Selektion. Analoge Operationen zum Join oder einen „Dereferenziere diesen DN“-Operator gibt es nicht, ein Rename und damit ein Selfjoin existiert nicht und Aggregation muss mit Schleifen im Client auscodiert werden. Anders als SQL ist die LDAP-Abfragesprache keine Algebra, es fehlt die Abgeschlossenheit. Abfrageergebnisse von LDAP-Anfragen sind keine LDAP-Bäume, sondern Knotenmengen, und die LDAP-Abfragesprache ist auf LDAP-Ergebnisse nicht wieder anwendbar, um die Ergebnisse zu verfeinern.

Quellen zu vermeintlichen Problemen von LDAP

Stärken und Anwendungsschwerpunkte von LDAP

  • Autorisierung und Authentifizierung: Das LDAP-Protokoll und LDAP-Server sind auf Authentifizierung (Passwortprüfung), Autorisierung (Rechteprüfung) und Adressbuch-Lookups optimiert. Der schnelle Verbindungsauf- und -abbau, das einfach strukturierte Protokoll und die performante Abfragesprache sorgen für eine Verarbeitung mit sehr guter Performance.
  • Schneller Lesezugriff: Durch seine nichtnormalisierte Datenspeicherung kann auf alle Daten eines LDAP-Datensatzes sehr schnell zugegriffen werden, weil alle Daten sofort mit einem einzigen Lesezugriff ausgelesen werden können.
  • Verteilte Datenhaltung: LDAP bietet verteilte Datenhaltung wie zum Beispiel redundante lokale Datenspeicherung an verteilten Standorten, lose gekoppelte Replikation zum Datenabgleich zwischen den Standorten und extrem hohe Verfügbarkeit ohne komplexe Konfiguration oder hohe Kosten.
  • Flexibles, voll objektorientiertes Datenmodell: LDAP erbt vom X.500-Standard das objektorientierte Datenmodell. Damit können LDAP-Verzeichnisse flexibel an volatile Anforderungen angepasst werden, ohne dass bereits im Verzeichnis implementierte Funktionalität verloren geht.
  • Breite Anwendungsunterstützung: LDAP ist der Industrie-de-facto-Standard für Authentifizierung, Autorisierung und Benutzer- und Adressverzeichnisse. Die meisten Softwareprodukte, die mit Benutzerdaten umgehen müssen und Marktrelevanz haben, unterstützen LDAP als Protokoll.

Siehe auch

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • LDAP — im TCP/IP‑Protokollstapel: Anwendung LDAP Transport UDP TCP Internet IP (IPv4, IPv6) Netzzugang …   Deutsch Wikipedia

  • LDAP — son las siglas de Lightweight Directory Access Protocol (en español Protocolo Ligero de Acceso a Directorios) que hacen referencia a un protocolo a nivel de aplicación el cual permite el acceso a un servicio de directorio ordenado y distribuido… …   Wikipedia Español

  • LDAP — (англ. Lightweight Directory Access Protocol  «облегчённый протокол доступа к каталогам») протокол прикладного уровня для доступа к службе каталогов X.500, разработанный IETF как облегчённый вариант разработанного ITU T протокола DAP.… …   Википедия

  • LDAP — (Lighweight Directory Access Protocol) en sí es un servicio de directorio ordenado y distribuido para buscar diversa información en un entorno de red. LDAP puede considerarse una base de datos (aunque su sistema de almacenamiento puede ser otro… …   Enciclopedia Universal

  • LDAP — protokolas statusas T sritis informatika apibrėžtis Supaprastintos kreipties į katalogus ↑protokolas, skirtas prieiti prie katalogų paslaugų, pavyzdžiui, prie bendrovės adresų knygų, iš skirtingų operacinių sistemų. LDAP yra supaprastinta… …   Enciklopedinis kompiuterijos žodynas

  • LDAP — Lightweight Directory Access Protocol Lightweight Directory Access Protocol (LDAP) est à l origine un protocole permettant l interrogation et la modification des services d annuaire. Ce protocole repose sur TCP/IP. Il a cependant évolué pour… …   Wikipédia en Français

  • Ldap — Lightweight Directory Access Protocol Lightweight Directory Access Protocol (LDAP) est à l origine un protocole permettant l interrogation et la modification des services d annuaire. Ce protocole repose sur TCP/IP. Il a cependant évolué pour… …   Wikipédia en Français

  • LDAP Account Manager — ist ein Webfrontend für die Verwaltung diverser Kontotypen in einem LDAP Verzeichnis. Es wurde in PHP geschrieben. Im Gegensatz zu Programmen wie phpLDAPadmin liegt der Schwerpunkt auf der kontobasierten Verwaltung. Der Benutzer erhält eine… …   Deutsch Wikipedia

  • LDAP Account Manager — is a webfrontend for managing various account types in an LDAP directory. It is written in PHP.In contrast to tools like PhpLDAPadmin the focus is account based and to give the user a more abstract view on his directory. The application is… …   Wikipedia

  • LDAP protokolas — statusas T sritis informatika apibrėžtis Supaprastintos kreipties į katalogus ↑protokolas, skirtas prieiti prie katalogų paslaugų, pavyzdžiui, prie bendrovės adresų knygų, iš skirtingų operacinių sistemų. LDAP yra supaprastinta kreipties į… …   Enciklopedinis kompiuterijos žodynas

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”