测试ldap连接

时间:2013-01-03 20:36:09

标签: java spring spring-security ldap

我想验证用户输入的ldap设置。在设置页面上,用户输入ldap url,manager dn和password。我在此页面上有一个“测试设置”按钮,以便用户可以快速验证ldap连接。如何轻松快速地完成这项工作?

我们的应用程序使用spring安全性并在向其添加ldap身份验证的过程中。 我是java和ldap的新手,所以非常感谢我指向正确的方向。

感谢。

1 个答案:

答案 0 :(得分:5)

使用Spring LDAP身份验证测试LDAP连接:

即。使用 authenticate() 方法:

ldapTemplate.authenticate(query, password);

甚至更好,使用 getContext() 方法:

ldapTemplate.getContextSource().getContext(userDn, userPassword));

抓住 org.springframework.ldap.CommunicationException 以检查连接是否成功。

完整的代码段应如下所示:

// Create the spring LdapTemplates; i.e. connections to the source and target ldaps:
try {
    // Note: I'm using the direct LdapTemplate initialization rather than with bean creation (Spring ldap supports both) 
    log.info("Connecting to LDAP " + sourceHost + ":" + sourcePort + "...");    
    LdapContextSource sourceLdapCtx = new LdapContextSource();
    sourceLdapCtx.setUrl("ldap://" + sourceHost + ":" + sourcePort + "/");
    sourceLdapCtx.setUserDn(sourceBindAccount);
    sourceLdapCtx.setPassword(sourcePassword);
    sourceLdapCtx.setDirObjectFactory(DefaultDirObjectFactory.class);
    sourceLdapCtx.afterPropertiesSet();
    sourceLdapTemplate = new LdapTemplate(sourceLdapCtx);
    // Authenticate:
    sourceLdapTemplate.getContextSource().getContext(sourceBindAccount, sourcePassword);
} catch (Exception e) {
    throw new Exception("Failed to connect to LDAP - " + e.getMessage(), e);
}

注意:我正在使用spring LDAP 2.3.x版本:

<dependency>
    <groupId>org.springframework.ldap</groupId>
    <artifactId>spring-ldap-core</artifactId>
</dependency>