Spring LDAP für Verzeichnisdienste
Spring LDAP vereinfacht LDAP-Zugriffe über Template-Ansatz, DirContextMapper und Integration mit Spring Security.
Fachliche Einordnung
LDAP ist in Unternehmen oft zentrale Benutzer- und Gruppenquelle. Saubere LDAP-Abfragen müssen sicher, performant und schema-aware sein.
Enterprise-Merksatz: Spring LDAP vereinfacht LDAP-Zugriffe über Template-Ansatz, DirContextMapper und Integration mit Spring Security.
Technische Darstellung
Kernkonzepte
- LdapTemplate ähnlich JdbcTemplate.
- DirContextMapper für Objektmapping.
- Base DN und Filter sauber parametrisieren.
- Paged Results und Suchgrenzen.
- Integration in Authentifizierung und Gruppenauflösung.
Wann einsetzen?
- Du liest Benutzer, Gruppen oder Organisationseinheiten aus LDAP.
- Du migrierst JAAS/LDAP-Login.
- Du brauchst Gruppen für Berechtigungsentscheidungen.
Typische Fehler und Risiken
- LDAP Filter per Stringverkettung bauen.
- Zu breite Suche ohne Base DN und Limits.
- LDAP als Fachdatenspeicher missbrauchen.
Legacy- und Modernisierungssicht
Container- oder JAAS-basierte LDAP-Konfiguration wird in Spring Security/LDAP-Konfiguration und klare Directory-Adapter überführt.
Ausführliches Beispiel
Das Beispiel zeigt bewusst nicht nur Annotationen, sondern auch die Verantwortung der Schicht. In echten Projekten sollte der technische Spring-Code an Adapter- oder Konfigurationsrändern bleiben, während die Fachlogik testbar und möglichst frameworkarm bleibt.
@Repository
class LdapEmployeeDirectory {
private final LdapTemplate ldap;
List<EmployeeDirectoryEntry> findByDepartment(String department) {
return ldap.search(
query().base("ou=people").where("departmentNumber").is(department),
(AttributesMapper<EmployeeDirectoryEntry>) attrs -> new EmployeeDirectoryEntry(
attrs.get("uid").get().toString(),
attrs.get("cn").get().toString()));
}
}
Checkliste für Reviews
- Ist die Verantwortung des Bausteins klar: Framework steuert Lebenszyklus, Library wird gezielt benutzt?
- Ist die Fachlogik außerhalb von Controller, Listener, Repository-Implementierung oder Konfiguration?
- Sind Fehlerfälle, Timeouts, Security, Monitoring und Tests sichtbar modelliert?
- Gibt es klare Grenzen zwischen DTO, Domäne, Persistence und Infrastruktur?