LDAP ist seit den frühen 1990er Jahren ein grundlegendes Identitätsprotokoll, als es als schlankere Alternative zum X.500 Directory Access Protocol entwickelt wurde. Es ist auch heute noch in den meisten Unternehmensumgebungen fest verankert und bildet weiterhin die Grundlage für Authentifizierungs- und Verzeichnisdienste, selbst wenn Unternehmen auf Cloud-Identitätslösungen umsteigen.
LDAP basiert auf einem Client-Server-Modell, bei dem ein LDAP-Client Anfragen an einen Verzeichnisserver sendet, der Informationen aus einem zentralen Verzeichnis speichert und zurückgibt. Die Kommunikation erfolgt über TCP/IP, in der Regel über Port 389 für Standardverbindungen oder Port 636 für LDAPS (LDAP über SSL/TLS).
Im Großen und Ganzen erfolgt ein LDAP-Austausch in vier Schritten:
- Verbinden:Der Client eröffnet eine TCP-Sitzung mit dem LDAP-Server.
- Einband: Der Client authentifiziert sich beim Server, entweder anonym oder mit Anmeldedaten.
- Anfrage:Der Client sendet eine Operation, beispielsweise eine Such- oder Änderungsanfrage, an das Verzeichnis.
- Antwort:Der Server gibt die angeforderten Daten oder einen Statuscode zurück, und der Client führt schließlich einen „unbind“-Befehl aus, um die Sitzung zu beenden.
Der Server organisiert seine Daten in einer hierarchischen Baumstruktur und reagiert auf eine definierte Reihe von Operationen, darunter „bind“, „search“, „compare“, „add“, „modify“, „delete“ und „unbind“. Dank dieses gemeinsamen Echtzeit-Zugriffsmodells eignet sich LDAP besonders gut für Umgebungen, in denen zahlreiche Anwendungen dieselbe maßgebliche Quelle für Identitätsdaten abfragen müssen.
Die LDAP-Verzeichnisstruktur
Ein LDAP-Verzeichnis speichert Informationen in einer hierarchischen Baumstruktur, die als Verzeichnisinformationsbaum (DIT) bezeichnet wird. Jeder Eintrag in dieser Baumstruktur steht für ein Objekt (z. B. einen Benutzer, eine Gruppe oder ein Gerät) und wird durch einen eindeutigen Distinguished Name (DN) identifiziert, der seine Position in der Hierarchie beschreibt.
Der DN setzt sich aus einer Reihe von Komponenten zusammen, die von der spezifischsten zur allgemeinsten gelesen werden:
- cn(allgemein gebräuchlicher Name), wie beispielsweise der vollständige Name einer Person
- ou(Organisationseinheit), wie beispielsweise eine Abteilung
- dc(Domain-Komponente), wie beispielsweise Teile eines Domainnamens
Beispielsweise identifiziert der DN „cn=John Smith,ou=Engineering,dc=example,dc=com“ einen Benutzer namens John Smith in der Organisationseinheit „Engineering“ innerhalb der Domäne „example.com“.
LDAP-Operationen
LDAP definiert eine kleine Reihe standardisierter Operationen, die den gesamten Lebenszyklus der Interaktion eines Clients mit einem Verzeichnis abdecken – von der Authentifizierung über Lese- und Schreibvorgänge bis hin zum Beenden der Sitzung.
- Binden: authentifiziert den Client gegenüber dem Verzeichnisserver und baut eine authentifizierte Sitzung auf. Der Bind-Vorgang macht LDAP als Authentifizierungsmechanismus nutzbar, da ein erfolgreicher Bind-Vorgang bestätigt, dass die übermittelten Anmeldedaten mit einem gültigen Verzeichniseintrag übereinstimmen.
- Suche: Durchsucht das Verzeichnis nach Einträgen, die bestimmten Kriterien entsprechen, wobei mithilfe einer Filtersyntax festgelegt wird, welche Attribute und Werte zurückgegeben werden sollen. Die Suche ist die am häufigsten verwendete LDAP-Operation und bildet die Grundlage für Anwendungsfälle wie die Suche nach Benutzern, die Überprüfung der Gruppenzugehörigkeit und das Durchsuchen des Verzeichnisses.
- Vergleichen: Prüft, ob ein bestimmter Attributwert mit dem in einem Eintrag gespeicherten Wert übereinstimmt, und gibt dabei „true“ oder „false“ zurück, ohne den gespeicherten Wert selbst preiszugeben. „Compare“ wird häufig für einfache Überprüfungsaufgaben verwendet, bei denen eine vollständige Suche nicht erforderlich ist.
- Hinzufügen: Erstellt einen neuen Eintrag im Verzeichnis an einer bestimmten Stelle in der Baumstruktur. Hinzufügungsvorgänge werden häufig bei der Benutzerverwaltung verwendet, wenn neue Konten, Gruppen oder Geräte im Verzeichnis registriert werden müssen.
- Ändern: Aktualisiert die Attribute eines bestehenden Eintrags und ermöglicht so Änderungen wie das Zurücksetzen von Passwörtern, die Aktualisierung von Gruppenzugehörigkeiten oder die Bearbeitung von Profilen. Mit „Modify“ können einzelne Attributwerte innerhalb eines Eintrags hinzugefügt, ersetzt oder gelöscht werden.
- DN ändern: Benennt einen Eintrag um oder verschiebt ihn an einen anderen Ort in der Verzeichnisstruktur. Die Funktion „DN ändern“ wird verwendet, wenn sich Organisationsstrukturen ändern, beispielsweise wenn ein Benutzer in eine andere Abteilung wechselt oder eine Organisationseinheit umstrukturiert wird.
- Löschen: Entfernt einen Eintrag aus dem Verzeichnis. Der Befehl „Delete“ wird in der Regel im Rahmen der Deaktivierung verwendet, wenn Konten oder Ressourcen außer Betrieb genommen werden und die entsprechenden Verzeichniseinträge bereinigt werden müssen.
- Entbinden: Beendet die Client-Sitzung und trennt die Verbindung zum Server. Auch wenn der Name vermuten lässt, dass damit eine Bindung rückgängig gemacht wird, signalisiert „unbind“ tatsächlich, dass der Client seine Arbeit beendet hat, und gibt die zugehörigen Serverressourcen frei.
- Erweiterte Betriebsabläufe: ist ein Framework, das es Anbietern und Normungsgremien ermöglicht, zusätzliche Operationen über den Kernumfang hinaus zu definieren. StartTLS, das eine standardmäßige LDAP-Verbindung in eine verschlüsselte Verbindung umwandelt, ist eine der am häufigsten verwendeten erweiterten Operationen.
LDAP wird in Unternehmensumgebungen eingesetzt, um Identitätsdaten zu zentralisieren und einen einheitlichen Zugriff auf diese Daten aus verschiedenen Anwendungen und Diensten zu ermöglichen. Zu den gängigen Anwendungsfällen gehören:
- Zentrale Authentifizierung: Überprüfung der Benutzeranmeldedaten für zahlreiche Anwendungen über ein einziges Verzeichnis, wodurch die Zunahme von Passwörtern und der Verwaltungsaufwand reduziert werden
- Benutzer- und Gruppenverwaltung: Speicherung und Organisation von Datensätzen für Mitarbeiter, Auftragnehmer und Systemkonten sowie der damit verbundenen Gruppen und Berechtigungen
- Adressbuch und Kontaktsuche: E-Mail-Clients und Tools für die Zusammenarbeit sollen die Möglichkeit haben, ein Unternehmensverzeichnis nach Kontaktdaten abzufragen
- Geräte- und Ressourcenverwaltung: Erfassung von Netzwerkressourcen wie Druckern, Servern und gemeinsam genutzten Speichern
- Grundlagen des Single Sign-On: dient als zugrunde liegende Identitätsquelle, die SSO-Systeme zur Überprüfung von Benutzern und zum Abrufen von Profilattributen nutzen
Bei der LDAP-Authentifizierung überprüft eine Anwendung die Identität eines Benutzers, indem sie sich mit den vom Benutzer übermittelten Anmeldedaten bei einem LDAP-Verzeichnis anmeldet. Bestätigt das Verzeichnis, dass die Anmeldedaten mit einem gültigen Eintrag übereinstimmen, wird der Benutzer authentifiziert und erhält Zugriff auf die anfragende Anwendung.
Der typische Ablauf der LDAP-Authentifizierung sieht wie folgt aus:
- Der Benutzer gibt seine Anmeldedaten (in der Regel einen Benutzernamen und ein Passwort) in eine Anwendung ein.
- Die Anwendung sendet eine LDAP-Bind-Anfrage an den Verzeichnisserver, die diese Anmeldedaten enthält.
- Der LDAP-Server ermittelt anhand der übermittelten Kennung den Eintrag des Benutzers innerhalb der Verzeichnisstruktur.
- Der Server vergleicht das eingegebene Passwort mit den für diesen Eintrag gespeicherten Anmeldedaten.
- Der Server sendet eine Erfolgsmeldung oder eine Fehlermeldung an die Anwendung zurück.
- Bei Erfolg gewährt die Anwendung dem Benutzer Zugriff auf die angeforderte Ressource.
Einfacher Bind-Vorgang vs. SASL-Bind-Vorgang
LDAP unterstützt zwei primäre Bind-Mechanismen, und die Wahl zwischen diesen hat erhebliche Auswirkungen auf die Sicherheit hinsichtlich der Art und Weise, wie Anmeldedaten während der Authentifizierung übertragen und überprüft werden.
A einfache Bindung übermittelt den Benutzernamen und das Passwort direkt an den Server, der die Anmeldedaten im Klartext versendet, sofern die Verbindung nicht durch TLS geschützt ist (wie bei LDAPS oder StartTLS).
A SASL-Bindung (Simple Authentication and Security Layer) unterstützt stärkere Authentifizierungsmechanismen, darunter Kerberos, Client-Zertifikate und andere erweiterbare Methoden, und wird in Umgebungen bevorzugt, in denen die Offenlegung von Anmeldedaten ein Problem darstellt.
LDAP und Active Directory werden häufig verwechselt, doch es handelt sich dabei nicht um konkurrierende Technologien. LDAP ist ein offenes Protokoll für den Zugriff auf Verzeichnisinformationen, während Active Directory ein Verzeichnisdienstprodukt von Microsoft ist, das LDAP als eine der unterstützten Zugriffsmethoden nutzt.
Einfach ausgedrückt: Active Directory nutzt LDAP, aber LDAP ist nicht gleich Active Directory. Viele Verzeichnisdienste, die nicht zu Microsoft gehören, darunter OpenLDAP, 389 Directory Server und Oracle Internet Directory, implementieren ebenfalls das LDAP-Protokoll.
LDAP, SAML und OAuth sind miteinander verwandte, aber unterschiedliche Protokolle, die verschiedene Probleme im weiteren Umfeld des Identitäts- und Zugriffsmanagements lösen.
- LDAPübernimmt den Verzeichniszugriff und die Authentifizierung, typischerweise für lokale Ressourcen und interne Anwendungen. Es handelt sich um ein Protokoll zum Abfragen und Bearbeiten eines Verzeichnisses, das die Authentifizierung über den Bind-Vorgang durchführen kann.
- SAML (Security Assertion Markup Language) ermöglicht die föderierte Authentifizierung für webbasiertes Single Sign-On, wobei Authentifizierungs- und Autorisierungsaussagen zwischen einem Identitätsanbieter und einem Dienstanbieter ausgetauscht werden. Es wird häufig verwendet, um Benutzer bei Cloud- und SaaS-Anwendungen anzumelden.
- OAuth ist ein Autorisierungsprotokoll, das es Anwendungen von Drittanbietern ermöglicht, eingeschränkten Zugriff auf die Ressourcen eines Benutzers zu erhalten, ohne dass Anmeldedaten offengelegt werden. Es regelt, was eine Anwendung im Namen eines Benutzers tun darf, nicht aber, wer der Benutzer ist.
Viele moderne Umgebungen stützen sich auf alle drei: LDAP als zugrunde liegendes Verzeichnis für Benutzerdaten, SAML für den föderierten SSO-Zugang zu Cloud-Anwendungen und OAuth für den delegierten API-Zugriff. Einen tieferen Einblick in das Zusammenspiel von Authentifizierungs- und Governance-Ebenen bietet der RSA-Artikel unter Identitätsmanagement und IAM .
LDAP ist nach wie vor weit verbreitet und wird nicht pauschal ersetzt, auch wenn Unternehmen zunehmend Cloud-Identitätsanbieter und SaaS-Anwendungen einsetzen. Die meisten Unternehmensumgebungen stützen sich weiterhin auf bestehende LDAP-Verzeichnisse als maßgebliche Quelle für Benutzerdaten, und moderne IAM-Plattformen sind in der Regel so konzipiert, dass sie sich in diese Verzeichnisse integrieren lassen, anstatt sie zu ersetzen.
Der vorherrschende Trend geht in Richtung hybrider Architekturen, in denen LDAP-Verzeichnisse neben Cloud-Identitätsanbietern, SSO-Plattformen und Multi-Faktor-Authentifizierungsebenen bestehen. Anstatt lediglich einen einfachen Bind-Vorgang durchzuführen und Zugriff zu gewähren, ergänzen Unternehmen die LDAP-Authentifizierung zunehmend durch zusätzliche Kontrollmechanismen, darunter Multi-Faktor-Authentifizierung, passwortlose Authentifizierung, adaptive Authentifizierung, risikobasierte Zugriffsentscheidungen und kontinuierliche Überprüfung. Dieser mehrschichtige Ansatz schützt bestehende Investitionen in Verzeichnissysteme und begegnet gleichzeitig den Risiken im Zusammenhang mit Anmeldedaten, die durch einen einfachen LDAP-Bind allein nicht gemindert werden können.
RSA’s Lösungen für Identitäts- und Zugriffsmanagement Integration in bestehende LDAP-Verzeichnisse, um moderne Authentifizierungs- und Zugriffskontrollmechanismen in die bestehende Infrastruktur einzubinden. RSA erweitert die LDAP-basierte Authentifizierung um Multi-Faktor-Authentifizierung (MFA), passwortlose Optionen und risikobasierten Zugriff, sodass Unternehmen ihre Identitätssicherheit verbessern können, ohne die Verzeichnisdienste ersetzen zu müssen, auf die sie bereits angewiesen sind.
LDAP selbst verschlüsselt den Datenverkehr standardmäßig nicht, und bei Standard-LDAP-Verbindungen werden die Anmeldeinformationen im Klartext übertragen. LDAP wird sicher, wenn es in Verbindung mit LDAPS oder StartTLS zur Verschlüsselung der Verbindung eingesetzt wird, kombiniert mit starken Authentifizierungsmechanismen wie SASL und zusätzlichen Sicherheitsmaßnahmen wie der Multi-Faktor-Authentifizierung. Ohne diese Schutzmaßnahmen ist LDAP anfällig für Angriffe durch das Abfangen von Anmeldedaten und das Einschleusen von Daten.
LDAP nutzt den TCP-Port 389 für standardmäßige, unverschlüsselte Verbindungen und den TCP-Port 636 für LDAPS, das die Kommunikation mittels SSL/TLS verschlüsselt. StartTLS ist eine Alternative, die auf Port 389 beginnt und die Verbindung zu einer verschlüsselten Sitzung aufwertet. Die Global-Katalog-Dienste in Active Directory nutzen die Ports 3268 und 3269 für ihre verschlüsselte Variante.
LDAP überträgt Daten über eine unverschlüsselte TCP-Verbindung auf Port 389, wodurch Anmeldedaten und Verzeichnisabfragen dem Risiko des Abfangens ausgesetzt sind. LDAPS bündelt dasselbe LDAP-Protokoll in einen SSL/TLS-verschlüsselten Kanal auf Port 636 und schützt die Verbindung so vor Abhörversuchen und Manipulationen. LDAPS ist in der Regel in Umgebungen erforderlich, in denen sensible Verzeichnisdaten oder Authentifizierungsdaten über nicht vertrauenswürdige Netzwerke übertragen werden.
Ja, LDAP ist in Unternehmensumgebungen nach wie vor weit verbreitet. Es dient weiterhin als zugrunde liegendes Verzeichnisprotokoll für Active Directory, OpenLDAP und andere Verzeichnisdienste und wird nach wie vor für die Authentifizierung, die Benutzerverwaltung und Verzeichnisabfragen in lokalen und hybriden Architekturen genutzt. Cloud-Identitätsplattformen lassen sich in der Regel in LDAP integrieren, anstatt es zu ersetzen.
Eine LDAP-Abfrage ist eine Suchanfrage, die von einem LDAP-Client an einen Verzeichnisserver gesendet wird, um Einträge abzurufen, die bestimmten Kriterien entsprechen. Abfragen verwenden eine definierte Filtersyntax, wie beispielsweise (&(objectClass=user)(department=Engineering)), um anzugeben, welche Attribute und Werte zurückgegeben werden sollen. Anwendungen nutzen LDAP-Abfragen, um Benutzer, Gruppen und andere Verzeichnisobjekte in großem Umfang abzufragen.
Ja, LDAP kann Cloud-Anwendungen durch Verzeichnissynchronisierung, LDAP-as-a-Service-Angebote oder die Integration mit Cloud-Identitätsanbietern unterstützen, die die Authentifizierung wieder an lokale LDAP-Verzeichnisse weiterleiten. Viele Unternehmen nutzen SAML oder SCIM neben LDAP, um eine Brücke zwischen lokalen Verzeichnissen und SaaS-Anwendungen zu schlagen, wobei LDAP als maßgebliche Identitätsquelle erhalten bleibt.