Einführung in Spring Security LDAP
1. Überblick
In diesem kurzen Lernprogramm erfahren Sie, wie Sie Spring Security LDAP einrichten.
Bevor wir beginnen, ein Hinweis zu LDAP: Es steht für Lightweight Directory Access Protocol und ist ein offenes, herstellerneutrales Protokoll für den Zugriff auf Verzeichnisdienste über ein Netzwerk.
Weitere Lektüre:
Spring LDAP Übersicht
Erfahren Sie, wie Sie die Spring LDAP-APIs zum Authentifizieren und Suchen von Benutzern sowie zum Erstellen und Ändern von Benutzern auf dem Verzeichnisserver verwenden.
Federdaten mit Federsicherheit
Erfahren Sie, wie Sie Spring Data in Spring Security integrieren.
2. Maven-Abhängigkeit
Schauen wir uns zuerst die Abhängigkeiten der Maven an, die wir brauchen:
org.springframework.security
spring-security-ldap
org.apache.directory.server
apacheds-server-jndi
1.5.5
Hinweis: Wir habenApacheDS als unseren LDAP-Server verwendet, der ein erweiterbarer und einbettbarer Verzeichnisserver ist.
3. Java-Konfiguration
Lassen Sie uns als Nächstes unsere Spring Security Java-Konfiguration diskutieren:
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.ldapAuthentication()
.userSearchBase("ou=people")
.userSearchFilter("(uid={0})")
.groupSearchBase("ou=groups")
.groupSearchFilter("member={0}")
.contextSource()
.root("dc=example,dc=com")
.ldif("classpath:users.ldif");
}
}
Dies ist natürlich nur der LDAP-relevante Teil der Konfiguration - die vollständige Java-Konfiguration finden Sie inhere.
4. XML-Konfiguration
Schauen wir uns nun die entsprechende XML-Konfiguration an:
Auch dies ist nur ein Teil der Konfiguration - der Teil, der für LDAP relevant ist. Die vollständige XML-Konfiguration finden Sie inhere.
5. LDAP-Datenaustauschformat
LDAP-Daten können mit dem LDAP Data Interchange Format (LDIF) dargestellt werden. Hier ein Beispiel für unsere Benutzerdaten:
dn: ou=groups,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: groups
dn: ou=people,dc=example,dc=com
objectclass: top
objectclass: organizationalUnit
ou: people
dn: uid=example,ou=people,dc=example,dc=com
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Jim Beam
sn: Beam
uid: example
userPassword: password
dn: cn=admin,ou=groups,dc=example,dc=com
objectclass: top
objectclass: groupOfNames
cn: admin
member: uid=example,ou=people,dc=example,dc=com
dn: cn=user,ou=groups,dc=example,dc=com
objectclass: top
objectclass: groupOfNames
cn: user
member: uid=example,ou=people,dc=example,dc=com
6. Die Anwendung
Zum Schluss hier unsere einfache Anwendung:
@Controller
public class MyController {
@RequestMapping("/secure")
public String secure(Map model, Principal principal) {
model.put("title", "SECURE AREA");
model.put("message", "Only Authorized Users Can See This Page");
return "home";
}
}
7. Fazit
In dieser Kurzanleitung zu Spring Security mit LDAP erfahren Sie, wie Sie ein Basissystem mit LDIF bereitstellen und die Sicherheit dieses Systems konfigurieren.
Diefull implementation dieses Tutorials finden Sie inthe github project - dies ist ein Eclipse-basiertes Projekt, daher sollte es einfach zu importieren und auszuführen sein.