我试图连接到我公司的活动目录,以创建一个能够添加,更新和删除用户的应用程序,我可以使用创建了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有关
预先感谢,希望有人能帮助我
答案 0 :(得分:0)
该错误表明需要进行传输加密-这通常意味着您需要将LDAP服务器URI从ldap://server.domain.gTLD更改为ldaps://server.domain.gTLD 但是由于很少有LDAP服务器使用从公共证书颁发机构(CA)颁发的证书,因此您还需要设置证书信任。我使用私有CA对所有证书进行签名,因此可以将CA公钥导入Java信任库。