Zum Inhalt springen

Lightweight Directory Access Protocol

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von 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), deutsch etwa Leichtgewichtiges Verzeichniszugriffsprotokoll, ist ein Netzwerkprotokoll zur Abfrage und Änderung von Informationen verteilter Verzeichnisdienste. Seine aktuelle und dritte Version ist in RFC 4510 bis RFC 4532 spezifiziert, das eigentliche Protokoll in RFC 4511.<ref>Vorlage:RFC-Internet</ref>

LDAP ist der De-facto-Industriestandard für Authentifizierung, Autorisierung sowie Adress- und Benutzerverzeichnisse. Die meisten Softwareprodukte, die mit Benutzerdaten umgehen müssen und am Markt relevant sind, unterstützen LDAP.

Die Standardports sind:

  • 389 für ungesicherte oder mit STARTTLS gesicherte Verbindungen<ref>Vorlage:RFC-Internet</ref>
  • 636 für mit TLS gesicherte Verbindungen (LDAPS).<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. IANA; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Verbindungsloses LDAP via UDP erfuhr nie eine weite Verbreitung und befindet sich mittlerweile außerhalb der Standardisierung.<ref>Vorlage:RFC-Internet</ref>

Überblick[Bearbeiten]

LDAP basiert auf dem Client-Server-Modell<ref>Justin Parisi: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> und wird bei Verzeichnisdiensten (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden. oder directory services) eingesetzt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (PDF; 6,7 MB) 22.9 LDAP – A Directory ServiceSkriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Novell, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., S. 464 f; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Es beschreibt die Kommunikation zwischen dem LDAP-Client und dem Verzeichnis-(Directory-)Server. Aus einem solchen Verzeichnis können objektbezogene Daten, z. B. Personendaten oder Rechnerkonfigurationen, ausgelesen werden.<ref>Frank-Michael Schlede, Thomas Bär / Andreas Donner: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Die Kommunikation erfolgt auf Basis von Abfragen.<ref>Holger Kattner: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Ein „Verzeichnis“ in diesem Sinne wäre beispielsweise ein Telefon- oder Adressbuch und nicht gleichbedeutend mit einem „Dateiordner“.

Bei einem Adressbuch könnte sich also folgende Beispielsituation ergeben: 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.

LDAP 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“)
  • die Modifikation der Daten (Ändere das Passwort des Benutzers Joe User).

Mittlerweile hat sich im administrativen Sprachgebrauch eingebürgert, dass man von einem LDAP-Server spricht,<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. UnboundID, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2018-02-27; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> wenn man einen Directory-Server meint, dessen Datenstruktur der LDAP-Spezifikation entspricht und der über das LDAPv3-Protokoll, das in RFC 2251<ref name="RFC2251" /> festgelegt wurde, Daten austauschen kann.

Neuere Implementierungen, die über RFC 2251<ref name="RFC2251" /> hinausgehen, indem sie zusätzlich die Replikation der Daten zwischen verschiedenen Verzeichnissen berücksichtigen, sind Gegenstand für eine mögliche Erweiterung des Protokolls.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. OpenLDAP Foundation, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Geschichte[Bearbeiten]

LDAP wurde an der Universität von Michigan (UMich) entwickelt und 1993 erstmals im RFC 1487<ref>Vorlage:RFC-Internet</ref> vorgeschlagen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Gleichzeitig stellte die UMich die erste Serverimplementierung vor, die heute als „UMich-LDAP“ bekannt ist.

LDAP ist eine vereinfachte ("lightweight") Alternative zum Directory Access Protocol (DAP), das als Teil des X.500-Standard spezifiziert ist.<ref>Petra Haberer: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. MitLinX Internetdienstleistungen; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> 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 einen TCP/IP-Stack auf und implementiert nur eine Auswahl der DAP-Funktionen und -Datentypen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Microsoft; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Dadurch ließ sich LDAP auch auf Arbeitsplatzrechnern der frühen 1990er Jahre implementieren und gewann eine breite Anwendungsbasis.

LDAP und X.500[Bearbeiten]

LDAP ist ein Zugriffsmechanismus gemäß X.500 und äußerlich auf dessen Dienst- und Datenmodelle festgelegt.<ref name="RFC4510">Vorlage:RFC-Internet</ref> Im Hintergrund jedoch lässt LDAP alles offen und jegliches Verzeichnissystem zu. Es gibt auch keine Festlegung vom LDAP auf einen bestimmten Unterbau wie TCP oder IP.

Wo X.500 in seinem Directory Access Protocol (DAP) mehrere aufeinander aufbauende Nachrichten erfordert, kann im LDAP eine einzige zusammengefasste Nachricht genügen.<ref name="RFC4511">Vorlage:RFC-Internet</ref>

Funktionsweise[Bearbeiten]

Datei:Ldapentry.gif
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[Bearbeiten]

Die Datenstruktur eines LDAP-Verzeichnisses ist durch einen hierarchischen Baum mit Wurzeln, Zweigen und Blättern gegeben.<ref>Margaret Rouse: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. TechTarget Germany, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2015-09-21;.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Dieser Baum wird auch Directory Information Tree (DIT) genannt.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle Corporation, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Die Wurzel (root, suffix) ist das oberste Datenobjekt, unter ihm verzweigen sich die höheren Strukturen.<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. UnboundID, Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden., archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2018-02-27; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Beispiel: Wird ein LDAP-Verzeichnis in einem Unternehmen mit dem Namen ACME eingesetzt, so 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.<ref>Petra Haberer: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. mitlinx.de; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Ein LDAP-Schema definiert jeweils Objekt-Klassen mit ihren Attributen, z. B. die Klasse person oder die Klasse organisation.

Die Verzeichniseinträge heißen LDAP-Objekte.<ref>Philipp Föckeler: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Jedes Objekt gehört zu mindestens einer, in der Regel aber zu mehreren Klassen.<ref>Thomas Bendler, Steffen Dettmer: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2022-05-24;.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> 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 POSIX-Benutzerkonto heißen.

Es gibt drei Arten von Objektklassen:

  1. Da ein Objekt zu mindestens einer strukturellen Klasse gehören muss, ist dies die Standardeinstellung.
  2. Daneben gibt es noch Hilfsklassen, welche verschiedenartigen Objekten gleiche Attribute zuweisen.
  3. 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.<ref>Philipp Föckeler: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Ein einzelnes Objekt wird eindeutig durch den Distinguished Name (DN) identifiziert,<ref>Philipp Föckeler: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> z. B. uid=juser,ou=People,ou=webdesign,c=de,o=acme. Dieser setzt sich aus einzelnen Relative Distinguished Names (RDN) zusammen.<ref>Oracle: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Eine andere Schreibweise für den DN ist der canonical name, der keine Attribut-Tags wie ou oder c enthält und bei dem die Trennung zwischen den RDNs durch Schrägstriche erfolgt;<ref>Microsoft: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> außerdem beginnt die Reihenfolge, im Gegensatz zum DN, mit dem obersten Eintrag, also z. B. 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, z. B.:

  • cn für common name
  • sn für surname (Nachname)
  • ou für organizational unit
  • st für state (Bundesstaat / -land)
  • c für country
  • 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 Wurzel 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.<ref>Patrick Schnabel: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>

Datei:Datenstruktur.png
Baumstruktur der LDAP-Inhalte

Wenn einzelne LDAP-Server für einzelne Teile des Verzeichnisbaumes zuständig sind, spricht man von Partitionen.<ref>The Apache Software Foundation: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „DateTime“ ist nicht vorhanden.; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Stellt ein Client eine Anfrage, für die der Server nicht zuständig ist, so 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, so 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.

Protokoll[Bearbeiten]

LDAP ist ein Protokoll der Anwendungsschicht (Applicationlayer) nach dem für TCP verwendeten DoD-Vier-Schichten-Modell und arbeitet mittels genau spezifizierter Zugriffs-Prozesse:

bind
Mit der bind-Direktive vermittelt man dem Directory-Server über einen 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. Die 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 (z. B. ldap.acme.com) oder Port-Benennung.

Beispiel[Bearbeiten]

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

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

Erklärung: Das Kommandozeilenprogramm kontaktiert über LDAP

  • den Directory-Server (d. h. den Host, deswegen das -h) ldap.acme.com
  • auf Port 389
  • und meldet sich über das Benutzerkonto des Directory Managers an diesem System an;
  • das Passwort wird interaktiv abgefragt (-W).
  • Die Anfrage zielt auf alle Benutzereinträge (-s sub, d. h. unterhalb, des Zweiges (englisch branch, daher das -b) ou=people,o=acme)
  • und sucht nach Personen aus Deutschland, deren Mailadresse mit joe beginnt ((&(mail=joe*)(c=de))).
  • Werden Personen gefunden, auf die dieser Filter passt, so wird deren Mailadresse zurückgegeben (mail).

Anwendungen[Bearbeiten]

LDAP wird heutzutage in vielen Bereichen eingesetzt, beispielsweise:

LDAP und hierarchische Datenbanken[Bearbeiten]

LDAP agiert als Frontend zu hierarchischen Datenbanken. LDAP an sich ist keine Datenbank, sondern lediglich das Protokoll zur Kommunikation.

Potentielle Probleme[Bearbeiten]

Keine Normalformen[Bearbeiten]

Hierarchische Datenbanken erzwingen keine Normalformen, z. B. können multivalued attributes erlaubt sein.

Abfragesprache[Bearbeiten]

LDAP unterstützt nicht alle relationalen Operationen:

  • Projektion (Spaltenauswahl): wird unterstützt, allerdings nur ohne Erzeugung errechneter Attribute
  • Selektion (Zeilenauswahl): wird unterstützt
  • Kreuzprodukt (JOIN): wird nicht unterstützt
  • Spaltenumbenennung (Rename, AS): wird nicht unterstützt (es gibt keinen „Dereferenziere diesen DN“-Operator, damit existiert auch kein Selfjoin)
  • Aggregation (GROUP BY): muss mit Schleifen im Client auscodiert werden.

Anders als SQL ist die LDAP-Abfragesprache keine Algebra, weil ihr die Abgeschlossenheit fehlt: Abfrageergebnisse von LDAP-Anfragen sind keine LDAP-Bäume, sondern Knotenmengen; daher ist die LDAP-Abfragesprache auch nicht auf LDAP-Ergebnisse anwendbar, um sie zu verfeinern.

Stärken[Bearbeiten]

Autorisierung und Authentifizierung[Bearbeiten]

Das Protokoll und LDAP-Server sind auf Authentifizierung (Passwortprüfung), Autorisierung (Rechteprüfung) und Adressbuch-Suchen optimiert. Der schnelle Verbindungsauf- und -abbau, das einfach strukturierte Protokoll und die knappe Abfragesprache sorgen für eine schnelle Verarbeitung.

Schneller Lesezugriff[Bearbeiten]

Durch seine nicht normalisierte 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[Bearbeiten]

LDAP bietet verteilte Datenhaltung, z. B. 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[Bearbeiten]

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 verlorengeht.

LDAP-Software[Bearbeiten]

LDAP-Server[Bearbeiten]

Viele Hersteller bieten LDAP-Server, beispielsweise:

LDAP-Clients[Bearbeiten]

Client-Software erlaubt den Zugriff auf die Verzeichnisdaten, zum Beispiel:

  • cURL: quelloffenes Kommandozeilenwerkzeug, das auch LDAP unterstützt.<ref>Vorlage:RFC-Internet</ref>
  • Active Directory Explorer: Ein kostenloser LDAP-Client von Sysinternals für Windows
  • JXplorer: quelloffener Client, der in Java entwickelt wurde.
  • LDAP Browser: Ein kostenloser LDAP-Client für Windows
  • LDAP Administrator: Ein erweitertes LDAP-Verwaltungstool, das zur Arbeit mit fast allen LDAP-Servern entwickelt wurde einschließlich Active Directory, Novell Directory Services, Netscape/iPlanet usw.
  • LDAP Admin: LDAP-Client, der zur Arbeit unter Windows entwickelt wurde.
  • Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.: Ein plattformübergreifender Client, der in Java von Apache Software Foundation entwickelt wurde.
  • GQ: Client, der in GTK+/GTK2 unter GPL für GNU/Linux entwickelt wurde.
  • LDAP Account Manager: Webfrontend für die Verwaltung diverser Kontotypen in einem LDAP-Verzeichnis. Es wurde in PHP geschrieben.
  • Luma: QT4-basierter Client für Linux. Der Einsatz von Plugins ermöglicht eine einfache Verwaltung von Benutzerkonten, Adressbücher usw.
  • phpLDAPadmin: Ein plattformübergreifender webbasierter Client, der unter GPL in PHP zur einfachen Verwaltung von LDAP-Verzeichnissen entwickelt wurde.
  • FusionDirectory: GPL-lizenzierte Web-Anwendung, die in PHP zum einfachen Verwalten von LDAP-Verzeichnissen und allen dazugehörenden Diensten entwickelt wurde. Es hat sich zu einem IDM entwickelt.<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 2020-08-04; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
  • ldap-csvexport: GPL-lizenziertes, Perl-Kommandozeilentool für den Export von LDAP-Daten als CSV mit vielen Features.
  • ldap-preg_replace: GPL-lizenziertes, Perl-Kommandozeilentool für das massenhafte Ändern von Attributen mit regulären Ausdrücken.

Siehe auch[Bearbeiten]

Literatur[Bearbeiten]

  • Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.
  • Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references responsive> <ref name="RFC2251"> Vorlage:RFC-Internet </ref> </references>

Vorlage:HinweisbausteinVorlage:Wikidata-Registrierung