Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

LDAP- und Active-Directory-Integration

05. 08. 2014 4 Min. Lesezeit CORE SYSTEMSinfrastructure
LDAP- und Active-Directory-Integration

Jede Enterprise-Anwendung stößt früher oder später auf dieselbe Anforderung: „Binden Sie es an Active Directory an.” Das klingt einfach. In Wirklichkeit steckt die LDAP-Integration voller Fallstricke, die Sie Wochen an Debugging kosten können. Hier ist unser praxiserprobter Leitfaden.

Active Directory — Mehr als ein Verzeichnisdienst

Active Directory (AD) ist das Rückgrat des Identity Managements in den meisten tschechischen Unternehmen. Windows Server 2012 R2, die aktuelle Version, vereint LDAP-Verzeichnis, Kerberos-Authentifizierung, DNS-Dienste und Group Policy in einem Ganzen. Für Entwickler von Webanwendungen ist die LDAP-Schnittstelle der primäre Einstiegspunkt.

Aber Vorsicht — AD ist kein reiner LDAP-Server. Microsoft hat eigene Erweiterungen, nicht-standardkonforme Attribute und Verhalten hinzugefügt, die sich von OpenLDAP oder 389 Directory Server unterscheiden. Wer das nicht weiß, der debuggt.

Authentifizierung — Bind richtig

LDAP-Authentifizierung funktioniert über die „Bind”-Operation — der Client sendet einen DN (Distinguished Name) und ein Passwort, der Server verifiziert. In AD gibt es drei Möglichkeiten, die Identität anzugeben:

# LDAP- und Active-Directory-Integration
CN=Jan Novák,OU=Users,DC=corp,DC=example,DC=cz

# 2. UPN bind (Active Directory specific)
[email protected]

# 3. Down-level logon (NTLM style)
CORP\jan.novak

Wir empfehlen UPN Bind — er ist am saubersten, erfordert keine Kenntnis des genauen DN (der sich ändert, wenn ein Benutzer zwischen OUs verschoben wird) und funktioniert konsistent über Domänen in einem Forest hinweg.

Benutzer suchen — LDAP-Filter

Nach einem erfolgreichen Bind müssen Sie den Benutzer und seine Attribute finden. LDAP-Filter haben eine spezifische Syntax, die man kennen muss:

# Find user by sAMAccountName
(&(objectClass=user)(objectCategory=person)(sAMAccountName=jnovak))

# Find all active users in an OU
(&(objectClass=user)(objectCategory=person)
  (!(userAccountControl:1.2.840.113556.1.4.803:=2)))

# Find group members
(&(objectClass=user)(memberOf=CN=Admins,OU=Groups,DC=corp,DC=example,DC=cz))

Wichtiges Detail: userAccountControl ist ein Bitfeld. Der Filter mit OID 1.2.840.113556.1.4.803 ist ein bitweises AND — er prüft, ob Bit 2 (ACCOUNTDISABLE) gesetzt ist. Ohne diesen Filter erhalten Sie auch deaktivierte Konten zurück. Ein häufiger Fehler.

Gruppen und Autorisierung

AD-Gruppen sind die Grundlage der Autorisierung, haben aber ihre Besonderheiten:

  • Verschachtelte Gruppen — eine Gruppe kann Mitglied einer anderen Gruppe sein. Das memberOf-Attribut zeigt nur die direkte Mitgliedschaft, nicht die transitive.
  • LDAP_MATCHING_RULE_IN_CHAIN (OID 1.2.840.113556.1.4.1941) — eine AD-Erweiterung für rekursive Mitgliedschaftsabfragen
  • Primäre Gruppe — typischerweise Domain Users, steht nicht in memberOf! Sie müssen primaryGroupID separat prüfen.
  • Token Bloat — ein Benutzer in zu vielen Gruppen kann Probleme mit dem Kerberos-Token bekommen (max. 65535 Bytes)
# Recursive membership — find all (including indirect) group members
(&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=App-Admins,OU=Groups,DC=corp,DC=example,DC=cz))

LDAPS — Verschlüsselung ist Pflicht

LDAP ohne Verschlüsselung sendet Passwörter im Klartext. Das ist inakzeptabel. Sie haben zwei Möglichkeiten:

  • LDAPS (Port 636) — SSL/TLS-Wrapper, erfordert ein Zertifikat auf dem Domain Controller
  • StartTLS (Port 389) — Upgrade einer bestehenden Verbindung auf TLS

In der Praxis empfehlen wir LDAPS. StartTLS hat bekannte Implementierungsprobleme in einigen Java-LDAP-Bibliotheken und älteren AD-Versionen. Das Zertifikat auf dem DC sollte von einer internen CA signiert sein — wenn Sie keine PKI-Infrastruktur haben, ist es Zeit, eine aufzubauen.

Connection Pooling und Performance

Ein LDAP-Bind ist eine relativ teure Operation. Für eine Webanwendung mit Dutzenden von Anfragen pro Sekunde möchte man nicht für jeden Request einen Bind durchführen. Lösungen:

  • Service-Account-Bind — die Anwendung authentifiziert sich mit einem Servicekonto und sucht dann Benutzer
  • Connection Pool — halten Sie einen Pool offener LDAP-Verbindungen vor (Spring LDAP, Apache Directory API)
  • Cache — Ergebnisse von LDAP-Abfragen mit einem angemessenen TTL cachen (5–15 Minuten)
  • Paging — für große Ergebnismengen Simple Paged Results Control verwenden (1000 Datensätze pro Seite)

Die häufigsten Fehler

In Jahren der AD-Integration haben wir diese Fehler immer wieder gesehen:

  • Referral Chasing — AD gibt Referrals an andere Domain Controller zurück. Wenn Sie diesen nicht folgen, fehlen Benutzer aus Child-Domänen.
  • Escaping von Sonderzeichen — ein DN mit Kommas, Anführungszeichen oder Backslashes muss korrekt escaped werden. Ansonsten: LDAP Injection.
  • Anonymous Bind — modernes AD deaktiviert ihn standardmäßig. Verwenden Sie immer ein Servicekonto.
  • Hardcodierte Base DN — nutzen Sie stattdessen RootDSE zur automatischen Erkennung des defaultNamingContext
  • Ignorieren leerer Passwort-Strings — manche LDAP-Bibliotheken führen einen Anonymous Bind statt eines Fehlers durch. Validieren Sie immer die Eingabe.

Der Weg zu SSO — SAML und Kerberos

Einfache LDAP-Authentifizierung erfordert, dass der Benutzer sein Passwort in Ihre Anwendung eingibt. Das ist nicht ideal — das Passwort durchläuft eine Anwendung, die es nicht braucht. Bessere Ansätze für 2014:

  • Kerberos/SPNEGO — transparentes SSO für Benutzer, die in der Domäne angemeldet sind. Der Browser sendet ein Kerberos-Ticket, die Anwendung verifiziert es.
  • ADFS + SAML 2.0 — föderiertes SSO über Active Directory Federation Services. Geeignet für Webanwendungen und Cloud-Dienste.
  • Hybrid — LDAP für Autorisierung (Gruppen, Attribute), Kerberos/SAML für Authentifizierung

AD-Integration — Eine Investition in die Grundlagen

Die richtige Integration mit Active Directory ist kein glamouröses Projekt. Man kann sie nicht im Vorstand präsentieren und sie gewinnt keinen Innovationspreis. Aber sie ist das Fundament, auf dem das Identity Management der gesamten Organisation ruht. Machen Sie es einmal und richtig — Servicekonto, LDAPS, Connection Pool, korrekte Filter und ein Weg zu SSO. Ihre Benutzer (und Ihr Ops-Team) werden es Ihnen danken.

ldapactive directoryssokerberosidentity
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns