将Spring连接到Active Directory的问题

时间:2018-11-26 13:21:17

标签: spring active-directory ldap

我试图连接到我公司的活动目录,以创建一个能够添加,更新和删除用户的应用程序,我可以使用创建了AD环境的同事的所有信息配置LdapContextSource,但是当我尝试这样做时一个简单的搜索是行不通的,并给我这个错误: org.springframework.ldap.AuthenticationNotSupportedException: [LDAP: error code 8 - BindSimple: Transport encryption required.]; nested exception is javax.naming.AuthenticationNotSupportedException: [LDAP: error code 8 - BindSimple: Transport encryption required.]

这是我的简单代码:

 public User getUserByLogin(String login) {
    LdapContextSource contextSource = new LdapContextSource();
    try {
        contextSource.setUrl("secret");
        contextSource.setBase("secret");
        contextSource.setUserDn("secret");
        contextSource.setPassword("secret");
        contextSource.afterPropertiesSet();
        LdapTemplate ldapTemplate = new LdapTemplate(contextSource);
        User user = ldapTemplate.findOne(query().where("uid").is(login), User.class);
        return user;
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException();
    }
}

可能与让大家知道我们正在使用GSS-API有关

预先感谢,希望有人能帮助我

1 个答案:

答案 0 :(得分:0)

该错误表明需要进行传输加密-这通常意味着您需要将LDAP服务器URI从ldap://server.domain.gTLD更改为ldaps://server.domain.gTLD 但是由于很少有LDAP服务器使用从公共证书颁发机构(CA)颁发的证书,因此您还需要设置证书信任。我使用私有CA对所有证书进行签名,因此可以将CA公钥导入Java信任库。