繁体   English   中英

使用Spring LDAP在Java中进行身份验证

[英]Authentication in Java using Spring LDAP

我正在尝试从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()这样的方法。

不需要设置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()应该是您正在寻找的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM