问题描述
我正在尝试从Spring LDAP Project连接到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()
这样的方法。
1楼
不需要设置CN。 您只需在上下文中指定managerDN和managerPass,如下所示。 然后,安全性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()
应该是您正在寻找的。