使用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");
}
}