LDAP-Authentifizierung mit Spring Boot LDAP
In diesem Artikel werde ich zeigen, wie man eine LDAP-Authentifizierung mit dem Spring-Boot-Plugin für LDAP erreicht.
Was Sie brauchen
- Java 8
- IntelliJ
- Apache-Verzeichnisserver
- Apache Directory Studio
- Frühlingsstiefel
Implementierung
Um LDAP für die Authentifizierung mit Spring Boot zu verwenden, richten Sie auf jeden Fall einen LDAP-Server ein und wir werden in unserem Fall Apache Directory Server verwenden. Ich werde „Einrichten und Hinzufügen von LDIF-Einträgen“ nicht zeigen, da dies ein völlig anderes Thema ist. Aber ich habe zwei Benutzer John Doe und James Hook in meinem LDAP-Repository. Ich werde diese Konten verwenden, um mich anzumelden.
Spring Boot mit LDAP-Abhängigkeiten einrichten
Als Teil der Implementierung werden wir die folgenden Gradle-Abhängigkeiten hinzufügen:
compile('org.springframework.boot:spring-boot-starter') compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-security') compile('org.springframework.ldap:spring-ldap-core') compile('org.springframework.security:spring-security-ldap') compile('org.springframework:spring-tx') compile('org.apache.directory.server:apacheds-server-jndi:1.5.5')
Für unsere Aufgabe spring-ldap-core
und spring-security-ldap
sind wichtige Abhängigkeiten.
Rest-Controller
Wir werden einen einfachen Rest-Controller erstellen, der unsere Beispielseite anzeigt. Diese Beispielseite wird gesichert und für den Zugriff muss sich ein Benutzer authentifizieren.
package com.betterjavacode.SpringBootLdapApplication.Controllers; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class HomeController { @GetMapping("/") public String index() { return "Welcome to Spring Boot Ldap Application Page"; } }
Sicherheitskonfiguration
Wir fügen unsere Sicherheitskonfiguration hinzu, indem wir einen WebSecurityConfig
hinzufügen Klasse, die WebSecurityConfigurerAdapter
erweitert .
package com.betterjavacode.SpringBootLdapApplication; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.httpBasic().and().authorizeRequests().anyRequest().authenticated().and().formLogin().and().csrf().disable(); } @Override public void configure(AuthenticationManagerBuilder authenticationManagerBuilder) throws Exception { authenticationManagerBuilder .ldapAuthentication() .contextSource().url("ldap://localhost:10389/o=betterjavacode") .managerDn("uid=admin,ou=system").managerPassword("secret") .and() .userSearchBase("ou=people") .userSearchFilter("(uid={0})"); } }
Wenn wir uns das jetzt ansehen, wird ein Benutzer, wenn er die Anwendung startet, mit einem Anmeldeformular aufgefordert, das auf formLogin()
basiert . Sobald der Benutzer die Anmeldeinformationen eingibt, wird er zur Startseite weitergeleitet.
Das Ergebnis dafür sieht wie folgt aus:
Sobald der Benutzer Anmeldeinformationen eingegeben hat:
Schlussfolgerung
In diesem Beitrag haben wir gezeigt, wie man LDAP für die Authentifizierung mit Spring Boot verwendet.
Referenzen
- Spring Boot-LDAP – Spring Boot-LDAP
- Authentifizierung über LDAP – LDAP-Authentifizierung