【问题标题】:Authentication in Java using Spring LDAP使用 Spring LDAP 在 Java 中进行身份验证
【发布时间】:2015-10-30 13:52:03
【问题描述】:

我正在尝试从 Spring LDAP 项目连接到 AD

我没有从 DefaultSpringSecurityContextSource 中找到任何方法来设置 CN 进行身份验证。

public void init(AuthenticationManagerBuilder auth) throws Exception {
        DefaultSpringSecurityContextSource context = new DefaultSpringSecurityContextSource("ldaps://test.ldaps.com/DC=test,DC=ldaps,DC=com");
        context.setPassword("password");
        context.afterPropertiesSet();
        auth
                .ldapAuthentication()
                .userSearchFilter("(|(objectClass=person)(objectClass=user))")
                .userDnPatterns("uid={0},OU=people)")
                .contextSource(context);
}

我没有找到像contect.setUserCN()这样的方法。

【问题讨论】:

标签: java spring-security ldap spring-boot


【解决方案1】:

应该不需要设置 CN。您只需在上下文中指定一个 managerDN 和 managerPass,如下所示。然后,Security Ldap 将使用上下文来查找符合当时条件的用户,检索其 DN,然后尝试使用检索到的 DN 和给定的通行证发出绑定。

这是我们运行良好的配置:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Autowired
    private SecurityConfigProperties conf;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder authBuilder) throws Exception {
        authBuilder
            .ldapAuthentication()
            .userSearchFilter("(sAMAccountName={0})")
            .userSearchBase("dc=XXXX,dc=XXXXXX,dc=XXX")
            .groupSearchBase("ou=XXXXXXX,dc=XXXX,dc=XXXXXX,dc=XXX")
            .groupSearchFilter("member={0}")
            .contextSource()
                .url(conf.getLdapUrl())
                .port(conf.getLdapPort())
                .managerDn(conf.getBindCn()) 
                .managerPassword(conf.getBindPass());
    }

}

但是按照您的代码示例context.setUserDN() 应该是您正在寻找的。​​p>

【讨论】:

  • 感谢您的回答!但是 SecurityConfigProperties 的导入是什么?或者我在哪个 spring 包中找到它?
  • 这只是我们创建的一个类,用于使用@ConfigurationProperties(prefix = "ldap") public class SecurityConfigProperties自动从配置文件中捕获一些属性
  • 完美!如果您接受此答案作为解决方案,那就太好了。
  • 您能解释一下参数 (sAMAccountName={0}) 和 member={0} 的作用吗?
  • {0} 是传递的第一个参数的占位符,即用户名。同样适用于member
猜你喜欢
  • 2014-03-08
  • 2018-08-09
  • 2021-09-02
  • 2012-11-18
  • 2019-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
  • 2013-03-06
相关资源
最近更新 更多