使用 spring 绑定到 LDAP

Bind to LDAP with spring

如果有错误,我对英文表示歉意。我需要通过 LDAP 向我的 spring 程序添加授权,但是在尝试授权客户端时出现错误:

Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C0907E9, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580]; remaining name 'uid=ben,ou=Пользователи'

据我了解,这是服务器上的程序授权错误。有权使用 LDAP 协议在 AD 中进行搜索的帐户的凭据通过 application.properties:

设置
spring.ldap.username=
spring.ldap.password=

负责授权的代码段与指南中的代码相同:

  @Override
  public void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth
      .ldapAuthentication()
        .userDnPatterns("(uid={0}),ou=Пользователи")
        .groupSearchBase("ou=groups")
        .contextSource()
          .url("xxx")
          .and()
        .passwordCompare()
          .passwordEncoder(new BCryptPasswordEncoder())
          .passwordAttribute("userPassword");
  }

不是很明白Spring,如有错误请指正。此错误是否与密码编码有关(在 passwordEncoder() 方法中)?

UPD.: 服务器使用389-Server

解决方案需要在配置请求时指定系统账号数据:

auth
  .ldapAuthentication()
    .userSearchBase("ou=Пользователи")
    .userSearchFilter("sAMAccountName={0}")
      .contextSource()
        .url(sourceUrl)
        .managerDn(managerLogin)        // <--- this 
        .managerPassword(managerPassw); // <--- this