从 Spring Boot 应用程序使用 AD LDP 进行 LDAP 身份验证

Posted

技术标签:

【中文标题】从 Spring Boot 应用程序使用 AD LDP 进行 LDAP 身份验证【英文标题】:LDAP authentication with AD LDP from Spring Boot application 【发布时间】:2018-05-14 07:32:13 【问题描述】:

我正在尝试在 Sprint Boot 应用程序中实现 LDAP 身份验证。在测试环境中,我安装了一个用于进行身份验证的 Active Directory LDP 服务。我在 AD 实例中创建了一个用户,启用了该帐户并设置了密码。然后,我尝试使用 Spring 登录表单中的此帐户进行身份验证。

当我尝试使用 AD 登录时,我收到一条错误消息:

您的登录尝试不成功,请重试。

原因:凭据错误

由于我是 AD 和 Spring 的新手,很可能我配置错误(或两者都配置错误!)。

您对我如何进一步诊断此问题有什么建议吗?或者有什么我可能遗漏的明显内容?

我的 Spring Boot 代码(我尝试了许多不同的变体,这是一个例子):

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter 

    @Override
    protected void configure(HttpSecurity http) throws Exception 
        http
            .authorizeRequests()
                .anyRequest().fullyAuthenticated()
                .and()
            .formLogin();
    

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception 
        auth.authenticationProvider(activeDirectoryLdapAuthenticationProvider());
    

    @Bean
    public AuthenticationManager authenticationManager() 
        return new ProviderManager(Arrays.asList(activeDirectoryLdapAuthenticationProvider()));
    

    @Bean
    public AuthenticationProvider activeDirectoryLdapAuthenticationProvider() 
        ActiveDirectoryLdapAuthenticationProvider provider = 
                new ActiveDirectoryLdapAuthenticationProvider("foo.bar", "ldap://servername:389");
        provider.setConvertSubErrorCodesToExceptions(true);
        provider.setUseAuthenticationRequestCredentials(true);
        return provider;
    

【问题讨论】:

【参考方案1】:

事实证明,我的 Java 实现没有任何问题。问题似乎与 AD LDP 配置有关。我尝试连接到另一个已知良好的 AD LDP 实例,并且身份验证第一次成功。

我将把它标记为答案,因为我不再对这个问题的解决方案感兴趣并希望关闭它......

【讨论】:

以上是关于从 Spring Boot 应用程序使用 AD LDP 进行 LDAP 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

如何使用Azure AD B2C保护Spring Boot REST API?

如何使用 Azure AD 为应用服务上的 Spring Boot 应用设置重定向 URI

带有 Spring Boot 和 Azure AD 的 KeyCloak

Spring Boot Security ldap auth针对多个独立的AD域

使用 Spring-boot Application 中的 Spring Security 使用 Active Directory(使用 AD 域)对用户进行身份验证时出现问题

Spring Boot Devtools 自动重启错误