Java >> Java Tutorial >  >> Tag >> Spring

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

  1. Spring Boot-LDAP – Spring Boot-LDAP
  2. Authentifizierung über LDAP – LDAP-Authentifizierung


Java-Tag