Lightweight Directory Access Protocol
| TCP/IP-Protokollfamilie |
|---|
| Anwendungsschicht |
| Transportschicht |
| Internet-Schicht |
| Verbindungsschicht |
| IPv6-Übergangsmechanismen |
Lightweight Directory Access Protocol ( auch bekannt unter seinem Akronym LDAP ) bezieht sich auf ein Protokoll auf Anwendungsebene , das den Zugriff auf einen geordneten und verteilten Verzeichnisdienst ermöglicht , um nach verschiedenen Informationen in einer Netzwerkumgebung zu suchen.
Ein Verzeichnis ist eine Menge von Objekten mit Attributen, die logisch und hierarchisch organisiert sind. Das bekannteste Beispiel ist das Telefonbuch, das aus einer Reihe von Namen (Personen oder Organisationen) besteht, die alphabetisch geordnet sind, wobei jedem Namen eine Adresse und Telefonnummer zugeordnet ist. Zum besseren Verständnis handelt es sich um ein Buch oder eine Mappe, in die Namen von Personen, Telefonnummern und Adressen geschrieben und alphabetisch geordnet sind.
Abhängig vom gewählten Modell spiegelt ein LDAP-Verzeichnisbaum manchmal verschiedene politische, geografische oder organisatorische Grenzen wider. Aktuelle LDAP-Bereitstellungen neigen dazu, DNS - Namen (Domain Name System) zu verwenden, um die höheren Ebenen der Hierarchie zu strukturieren. Wenn Sie im Verzeichnis nach unten gehen, können Einträge erscheinen, die Personen, Organisationseinheiten, Drucker, Dokumente, Personengruppen oder irgendetwas darstellen, das einen bestimmten Eintrag in der Baumstruktur (oder mehrere Einträge) darstellt.
Normalerweise speichert es die Authentifizierungsinformationen (Benutzername und Passwort ) und wird zur Authentifizierung verwendet, obwohl es möglich ist, andere Informationen zu speichern (Benutzerkontaktinformationen, Standort verschiedener Netzwerkressourcen, Berechtigungen, Zertifikate usw.). Zusammenfassend ist LDAP ein Protokoll für den einheitlichen Zugriff auf eine Reihe von Informationen in einem Netzwerk.
Die aktuelle Version ist LDAPv3 und ist in RFC 4511 definiert (eine technische Spezifikations-Roadmap wird von RFC 4510 bereitgestellt ).
Herkunft und Einflüsse
Das Verständnis der Telekommunikationsunternehmen für Verzeichnisanforderungen war nach 70 Jahren der Erstellung und Verwaltung von Telefonverzeichnissen gut entwickelt. Diese Unternehmen führten das Konzept der Verzeichnisdienste in die Informationstechnologie und Computernetzwerke ein, was in der X.500 -Spezifikation gipfelte , einer Reihe von Protokollen, die in den 1980er Jahren von der International Telecommunications Union ( ITU ) entwickelt wurden.
Auf X.500-Verzeichnisdienste wurde traditionell über das Directory Access Protocol (DAP) zugegriffen, für das der Open Systems Interconnection ( OSI )-Protokollstapel erforderlich war. LDAP war ursprünglich als leichtgewichtiges alternatives Protokoll für den Zugriff auf X.500-Verzeichnisdienste über den einfacheren (und jetzt weiter verbreiteten) TCP/IP-Protokollstapel gedacht . Dieses Verzeichniszugriffsmodell wurde von den Protokollen des DIXIE -Verzeichnisverwaltungsdienstes nachgeahmt .
Schon bald wurden eigenständige LDAP-Verzeichnisserver sowie Verzeichnisserver implementiert, die DAP und LDAP unterstützten. Letzteres wurde bei Unternehmen beliebt, da es die Bereitstellung eines OSI-Netzwerks überflüssig machte. Jetzt können die X.500-Verzeichnisprotokolle einschließlich DAP direkt über TCP/IP verwendet werden.
Das Protokoll wurde ursprünglich um 1993 von Tim Howes ( University of Michigan ), Steve Kille ( Isode Limited ) und Wengyik Yeong ( Performance Systems International ) entwickelt. Die Weiterentwicklung erfolgte durch die Internet Engineering Task Force .
In den frühen Entwicklungsstadien von LDAP war es als Lightweight Directory Browsing Protocol oder LDBP bekannt . Es wurde später umbenannt, da der Umfang des Protokolls erweitert worden war, um nicht nur Funktionen zum Durchsuchen und Suchen von Verzeichnissen, sondern auch Funktionen zum Aktualisieren von Verzeichnissen einzuschließen.
LDAP hat spätere Internetprotokolle beeinflusst, darunter spätere Versionen von X.500, XML Enabled Directory (XED), Directory Service Markup Language (DSML), Service Provisioning Markup Language (SPML) und Service Location Protocol (SLP).
Protokollübersicht
Ein Client initiiert eine LDAP-Sitzung, indem er eine Verbindung zu einem LDAP-Server herstellt, der auf TCP -Port 389 voreingestellt ist. Der Client sendet dann eine Vorgangsanforderung an den Server, und der Server sendet Antworten. Mit einigen Ausnahmen muss der Client nicht auf eine Antwort warten, bevor er die nächste Anfrage sendet, und der Server kann in beliebiger Reihenfolge antworten.
Der Client kann die folgenden Operationen erfordern:
- TLS starten – verwenden Sie die LDAPv3 Transport Layer Security (TLS)-Erweiterung für eine sichere Verbindung
- Binden – authentifizieren und spezifizieren Sie eine Version des LDAP-Protokolls
- Suchen — Suchen und Abrufen von Verzeichniseinträgen
- Vergleichen – Testen Sie, ob eine benannte Eingabe einen bestimmten Attributwert enthält
- Hinzufügen — Fügt einen neuen Eintrag hinzu
- Löschen — Einen Eintrag löschen
- Ändern — Einen Eintrag ändern
- Distinguished Name (DN) ändern — Einen Eintrag ändern oder umbenennen
- Abandon — bricht eine vorherige Anfrage ab
- Erweiterte Operation – generische Operation, die verwendet wird, um andere Operationen zu definieren
- Unbind — schließt die Verbindung (nicht die Umkehrung von Bind)
Darüber hinaus kann der Server „unaufgeforderte Benachrichtigungen“ senden, die keine Antworten auf Anfragen sind, beispielsweise bevor die Verbindung abläuft.
Eine gängige alternative Methode zur Sicherung der LDAP-Kommunikation ist die Verwendung eines SSL-Tunnels. Dies wird in LDAP-URLs mit dem URL-Schema „ldaps“ angegeben. Der Standardport für LDAP über SSL ist 636. Die Verwendung von LDAP über SSL war in LDAP Version 2 (LDAPv2) üblich, wurde jedoch nie in einer formalen Spezifikation standardisiert. Seine Verwendung gilt als obsolet wie LDAPv2, das 2003 offiziell zurückgezogen wurde. [ 1 ]
LDAP ist in Bezug auf ASN.1 definiert , und die Nachrichtenprotokolle sind im BER -Binärformat codiert . Es verwendet jedoch Textdarstellungen für eine Reihe von ASN.1-Feldern und -Typen.
Verzeichnisstruktur
Das Protokoll greift auf LDAP-Verzeichnisse zu, die der Ausgabe von 1993 des X.500-Modells folgen:
- Ein Verzeichnis ist ein Baum von Verzeichniseinträgen.
- Ein Eintrag besteht aus einer Reihe von Attributen.
- Ein Attribut hat einen Namen (einen Attributtyp oder eine Attributbeschreibung ) und einen oder mehrere Werte. Attribute werden in einem Schema definiert (siehe unten).
- Jeder Eintrag hat eine eindeutige Kennung: seinen Distinguished Name ( DN ). Dieser besteht aus seinem Relative Distinguished Name (RDN), der aus einigen Attributen des Eintrags aufgebaut ist, gefolgt vom DN des übergeordneten Eintrags. Stellen Sie sich den Distinguished Name als den vollständigen Dateinamen und den Relativ Distinguished Name als den relativen Dateinamen in einem Ordner vor.
Es muss darauf geachtet werden, dass sich ein Distinguished Name während der Lebensdauer eines Eintrags ändern kann, beispielsweise wenn Einträge im Baum verschoben werden. Um Einträge zuverlässiger und eindeutiger zu machen, könnte eine UUID im Satz von Betriebsattributen des Eintrags bereitgestellt werden .
Wenn ein Eintrag im LDAP Data Interchange Format (LDIF) gerendert wird (LDAP selbst ist ein binäres Protokoll), könnte er so aussehen:
dn: cn=John Doe,dc=Beispiel,dc=com cn: John Doe Vorname: Johannes sn: Damhirschkuh Telefonnummer: +1 888 555 6789 Telefonnummer: +1 888 555 1232 E-Mail: [email protected] Manager: cn=Barbara Doe,dc=Beispiel,dc=com Objektklasse: inetOrgPerson Objektklasse: Organisationsperson Objektklasse: Person Objektklasse: oben
„ dn “ ist der Name des Eintrags; es ist weder ein Attribut noch Teil der Eingabe. „ cn=John Doe “ ist der relative Distinguished Name und „ dc=example,dc=com “ ist der Distinguished Name des übergeordneten Eintrags, wobei dc die Domänenkomponente angibt . Die anderen Zeilen präsentieren die Attribute in der Eingabe. Attributnamen sind in der Regel mnemotechnische Zeichenketten, wie „ cn “ für Common Name , „ dc “ für Domänenkomponente , „ Mail “ für E-Mail-Adresse und „ Sn “ für Nachname .
Ein Server hostet einen Unterbaum, der mit einem bestimmten Eintrag beginnt, zum Beispiel „ dc=example,dc=com “ und seinen Kindern. Server können auch Verweise auf andere Server speichern, wodurch ein Zugriffsversuch auf „ ou=department,dc=example,dc=com “ einen Verweis oder die Fortsetzung eines Verweises auf einen Server zurückgeben kann, der diesen Teil des Verzeichnisbaums hostet. Der Client kann dann den anderen Server kontaktieren. Einige Server unterstützen auch Chaining , was bedeutet, dass der Server den anderen Server kontaktiert und das Ergebnis an den Client zurückgibt.
LDAP definiert selten eine Reihenfolge: Der Server kann die Werte eines Attributs, die Attribute in einem Eintrag und die durch eine Suchoperation gefundenen Einträge in beliebiger Reihenfolge zurückgeben. Dies folgt der formalen Definition – eine Eingabe wird als eine Menge von Attributen definiert, und ein Attribut ist eine Menge von Werten, und die Mengen müssen nicht geordnet werden.
LDAP-URLs
Es gibt ein LDAP- URL -Format , um herauszufinden, welche Clients sie in unterschiedlichem Maße unterstützen und welche Server sie als Referrer und Continuation Referrer zurückgeben (siehe RFC 4516 ):
ldap://host:port/DN?attributes?scope?filter?extensions
Die meisten der unten beschriebenen Komponenten sind optional.
- host ist der FQDN oder die IP-Adresse des LDAP-Servers, auf dem die Abfrage erfolgt.
- port ist der Netzwerkport des LDAP-Servers.
- DN ist der Distinguished Name, der als Suchbasis verwendet werden soll.
- Attribute ist eine durch Kommas getrennte Liste von Attributen, die zurückgegeben werden sollen.
- scope gibt den Suchbereich an und kann "base" (Standard), "one" oder "sub" sein.
- Filter ist ein Suchfilter. Zum Beispiel
(objectClass=*)wie in RFC 4515 definiert . - Erweiterungen sind Erweiterungen des LDAP-URL-Formats.
Beispielsweise bezieht sich „ ldap://ldap.example.com/cn=John%20Doe,dc=example,dc=com“ auf alle Benutzer im John Doe-Eintrag in ldap.example.com, während „ ldap:///dc=example,dc=com??sub?(givenName=John)“ nach dem Eintrag auf dem Standardserver sucht (beachten Sie den dreifachen Schrägstrich, bei dem der Host weggelassen wird, und das doppelte Fragezeichen , bei dem der Host weggelassen wird). ). Wie bei anderen URLs müssen Sonderzeichen mit Prozentzeichen codiert werden.
Es gibt ein ähnliches, nicht standardmäßiges URL-Schema für LDAP über SSL, ldaps:. Dies darf nicht mit LDAP über TLS verwechselt werden, was mit der STARTTLS- Operation unter Verwendung des normalen Schemas erreicht werden kann. ldap:.
Varianten
Viele der Serveroperationen werden dem Implementierer oder Administrator überlassen, um zu entscheiden, wie sie ausgeführt werden. Folglich können Server für eine Vielzahl von Szenarien unterstützt werden.
Beispielsweise ist die Datenspeicherung auf dem Server nicht spezifiziert – der Server kann einfache Textdateien oder Datenbanken verwenden oder einfach nur ein Gateway zu einem anderen Server sein. Die Zugangskontrolle ist kein Standard, obwohl daran gearbeitet wurde und allgemein verwendete Modelle existieren. Benutzerkennwörter können in Ihren Verzeichniseinträgen oder anderswo gespeichert werden. Der Server kann sich weigern, von Ihnen gewünschte Operationen auszuführen, und verschiedene Beschränkungen auferlegen.
Die meisten Abschnitte von LDAP sind erweiterbar. Zum Beispiel: Man kann neue Operationen definieren. Steuerelemente können Anforderungen und Antworten ändern, um beispielsweise geordnete Suchergebnisse anzufordern. Neue Suchbereiche und Bindungsmethoden können definiert werden. Attribute können Optionen haben , die ihre Semantik ändern könnten.
Andere Datenmodelle
Gerade als LDAP seinen Höhepunkt hatte, haben Anbieter es als Zugriffsprotokoll für andere Dienste bereitgestellt. Die Implementierung formt dann die Daten so, dass sie das LDAP/X.500-Modell nachahmen, aber die Starrheit, mit der dieses Modell befolgt wird, variiert zwischen den Implementierungen. Beispielsweise gibt es Software für den Zugriff auf SQL -Datenbanken über LDAP, obwohl sich LDAP nicht dafür eignet. [ 2 ] X.500- Server können auch LDAP unterstützen.
Ebenso werden Daten, die zuvor in anderen Arten von Datenspeichern untergebracht waren, manchmal in LDAP-Verzeichnisse verschoben. Beispielsweise können Unix-Benutzer- und Gruppeninformationen in LDAP gespeichert und über PAM- und NSS -Module abgerufen werden . LDAP wird manchmal von anderen Diensten verwendet, um eine Authentifizierung zu erreichen.
Verwendung
Namensstruktur
Da ein LDAP-Server Verweise auf andere Server zurückgeben kann, um neue Anforderungen zu stellen, die der Server selbst nicht zurückgeben kann, ist eine Namensstruktur für LDAP-Einträge erforderlich, damit ein Server gefunden werden kann, der einen bestimmten Distinguished Name hostet. Da im DNS bereits eine Struktur vorhanden ist, stellen Top-Level-Nameserver manchmal gefälschte DNS-Namen bereit, wie dies in X.500 der Fall war.
Wenn eine Organisation den Domänennamen example.org hat, hat ihr Eintrag auf oberster Ebene in LDAP normalerweise einen Distinguished Name dc=example,dc=org(wobei dc Domänenkomponente bedeutet). Wenn der LDAP-Server auch ldap.example.org heißt, wird die Top-Level-Organisation der URL der LDAP-URL zu ldap://ldap.example.org/dc=example,dc=org.
Unterhalb der hohen Ebene spiegeln die Eintragsnamen im Allgemeinen eher die interne Organisationsstruktur oder Anforderungen wider als DNS-Namen.
Terminologie
Die anzutreffende LDAP-Terminologie ist manchmal umständlich. Dies ist teilweise auf Missverständnisse zurückzuführen, andere Beispiele sind auf historische Ursprünge zurückzuführen, andere ergeben sich aus der Verwendung mit anderen Diensten als X.500, die eine andere Terminologie verwenden. Zum Beispiel wird "LDAP" manchmal verwendet, um auf das Protokoll zu verweisen, manchmal auf das Protokoll und die Daten. Ein „LDAP-Verzeichnis“ können die Daten oder auch der Zugangspunkt sein. Ein "Attribut" kann der Typ des Attributs oder der Inhalt eines Attributs in einem Verzeichnis oder die Beschreibung eines Attributs (ein Attributtyp mit Optionen ) sein. Eine anonyme Bindung ist eine andere Methode als eine nicht authentifizierte Bindung, obwohl beide anonyme Authentifizierungszustände erzeugen, sodass beide Begriffe für beide Varianten verwendet werden. Das Attribut "uid" sollte Benutzernamen statt numerischer Benutzerkennungen speichern.
Implementierungen
Es gibt verschiedene Implementierungen und tatsächliche Anwendungen des LDAP-Protokolls.
Active Directory
Active Directory ist der Name, der von Microsoft (seit Windows 2000) als zentraler Informationsspeicher für eine seiner Verwaltungsdomänen verwendet wird.
Ein Verzeichnisdienst ist ein strukturiertes Repository der Informationen der verschiedenen Objekte, die im Active Directory enthalten sind, in diesem Fall könnten es Drucker, Benutzer, Computer usw. sein.
Unter diesem Namen gibt es tatsächlich ein Schema (Definition der Felder, die konsultiert werden können) LDAP Version 3, das die Integration anderer Systeme ermöglicht, die das Protokoll unterstützen. Dieses LDAP speichert Benutzerinformationen, Netzwerkressourcen, Sicherheitsrichtlinien, Konfiguration, Zuweisung von Berechtigungen usw.
Novell Verzeichnisdienste
Auch als eDirectory bekannt, ist die Novell -Implementierung zur Verwaltung des Zugriffs auf Ressourcen auf verschiedenen Servern und Computern in einem Netzwerk. Es besteht im Wesentlichen aus einer hierarchischen, objektorientierten Datenbank, die jeden Server, Computer, Drucker, Dienst, Person usw. unter denen Berechtigungen für die Zugriffskontrolle durch Vererbung erstellt werden. Der Vorteil dieser Implementierung besteht darin, dass sie auf mehreren Plattformen ausgeführt werden kann, sodass sie leicht an Umgebungen angepasst werden kann, die mehr als ein Betriebssystem verwenden.
iPlanet - Sun ONE Directory Server
Basierend auf der alten Netscape -Implementierung wurde iPlanet entwickelt, als AOL die Netscape Communications Corporation erwarb und dann gemeinsam mit Sun Microsystems Serversoftware vermarktete, einschließlich iPlanet Directory Server, seiner Implementierung von LDAP... Es heißt derzeit Sun ONE Directory Server.
OpenLDAP
Es ist eine freie Implementierung des Protokolls, das mehrere Schemata unterstützt, sodass es zur Verbindung mit jedem anderen LDAP verwendet werden kann.
Es hat eine eigene Lizenz, die OpenLDAP Public License . Da es sich um ein plattformunabhängiges Protokoll handelt, enthalten mehrere GNU/Linux- und BSD -Distributionen es ebenso wie AIX , HP-UX , Mac OS X , Solaris , Windows (2000/XP) und z/OS .
OpenLDAP hat vier Hauptkomponenten:
- slapd – eigenständiger LDAP- Daemon .
- slurpd - eigenständiger LDAP-Update-Replikations-Daemon.
- Bibliotheksroutinen zur Unterstützung des LDAP-Protokolls.
- Dienstprogramme, Tools und Clients.
Red Hat Directory Server
Directory Server ist ein LDAP-basierter Server, der Anwendungseinstellungen, Benutzerprofile, Gruppeninformationen, Richtlinien sowie Zugriffskontrollinformationen innerhalb eines plattformunabhängigen Betriebssystems zentralisiert.
Red Hat Directory Server bildet ein zentrales Repository für die Identitätsverwaltungsinfrastruktur und vereinfacht die Benutzerverwaltung, indem Datenredundanz eliminiert und die Datenpflege automatisiert wird.
Apache Directory Server
Apache Directory Server (ApacheDS), ist ein Verzeichnisserver, der von Alex Karasulu vollständig in Java geschrieben wurde und unter der Apache Software-Lizenz verfügbar ist. Er ist LDAPv3-konform, von der Open Group zertifiziert , unterstützt andere Netzwerkprotokolle wie Kerberos und NTP und bietet gespeicherte Prozeduren , Trigger und Ansichten ; Funktionen, die in relationalen Datenbanken vorhanden sind, aber in der LDAP-Welt nicht vorhanden waren.
OpenDS
Basierend auf den Standards LDAPv3 und DSMLv2 entstand OpenDS als internes SUN-Projekt, obwohl es später der Community zur Verfügung gestellt wurde. Es wurde in JAVA entwickelt und erfordert eine Ausführungsumgebung (Java Runtime Environment), um zu funktionieren. Es ist plattformübergreifend.
Die erste stabile Version wurde im Juli 2008 veröffentlicht. [ 3 ]
Referenzen
- ^ "Archivierte Kopie" . Archiviert vom Original am 4. Oktober 2008 . Abgerufen am 9. Oktober 2008 .
- ↑ „OpenLDAP Software 2.4 Administratorhandbuch: Backends“ . Abgerufen 2009 .
- ^ "Archivierte Kopie" . Archiviert vom Original am 26.09.2010 . Abgerufen am 11. Januar 2011 .
Externe Links
- LDAP in PHP abfragen
- Einführung in LDAP
- OpenLDAP-Website
- RFC 2251 LDAP v3
- Apache DirectoryServer v1.5
- RFC 1777 LDAP (auf Spanisch, veraltet durch RFC3494)
- Konfigurieren Sie den LDAP-Server Fedora 13