使用Spring Boot实现Spring Security和openLDAP的集成方法

版本.

Spring Boot:3.1.1春季引导程序。

即使按照网上的文章复制源代码

用Spring Boot制作应用程序并使用Spring Security进行登录认证,将用户存储在openLDAP中。

请按照以下网站的参考进行openLDAP的构建。

 

演示项目
源代码主目录
com.example.demo

Spring Boot的代码

验证LdapApplication.java

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class AuthenticatingLdapApplication {
	
	 public static void main(String[] args) {
		    SpringApplication.run(AuthenticatingLdapApplication.class, args);
		  }

}

首页控制器.java

package com.example.demo;

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 the home page!";
	  }

}

package com.example.demo;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
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.crypto.password.LdapShaPasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;



@Configuration
public class WebSecurityConfig {

  @Bean
  public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
      http
      .authorizeRequests()
      .requestMatchers("/**").authenticated() // 全てのパスに対して「認証済み」を要求するアクセスポリシーを設定する
      .and()
      .logout().permitAll() // ログアウト機能を有効化
      .and()
      .formLogin().permitAll(); // フォームログイン機能を有効化
      
      return http.build();  
}

  @Autowired
  public void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
      .ldapAuthentication()
        .userDnPatterns("uid={0},ou=people")
        .groupSearchBase("ou=group")
        .contextSource()
          .url("ldap://192.168.2.220:389/dc=srv,dc=world")
          .managerDn("cn=manager,dc=srv,dc=world") 
          .managerPassword("Zaq12wsx@1")
          .and()
        .passwordCompare()
          .passwordEncoder(new LdapShaPasswordEncoder())
          .passwordAttribute("userPassword");
  }

}

广告
将在 10 秒后关闭
bannerAds