请找到下面的代码,并帮助我连接到LDAP。
我的下面的代码:
Hashtable<String, String> environment = new Hashtable<String, String>();
environment.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
environment.put(Context.PROVIDER_URL, "ldap://192.168.0.214:389");
environment.put(Context.SECURITY_AUTHENTICATION, "simple");
environment.put(Context.SECURITY_PRINCIPAL, "CN=Administrator,CN=Users,DC=estsecondary,DC=com");
environment.put(Context.SECURITY_CREDENTIALS, "*****8");
try {
LdapContext ctx = new InitialLdapContext(environment, null);
}catch (AuthenticationNotSupportedException exception) {
System.out.println("The authentication is not supported by the server");
} catch (AuthenticationException exception){
System.out.println("Incorrect password or username");
}catch (NamingException exception){
System.out.println("Error when trying to create the context");
}
但是我无法连接。我收到“服务器不支持身份验证”。请在下面找到我的LDAP结构。
答案 0 :(得分:0)
您对此发表评论:
服务器不支持身份验证[LDAP:错误代码8-BindSimple:需要传输加密。]
我认为这是异常消息。它告诉您该连接已被拒绝,因为您正尝试通过未加密的连接发送BindSimple身份验证凭据。
您正在使用端口386,该端口(默认情况下)是非SSL端口。如果要使用此端口,则可以在尝试进行身份验证之前告诉JNDI进行TLS协商。 example code中有一些JNDI documentation。
另一种选择是将URL更改为
ldaps://192.168.0.214:636
并使用SSL进行初始连接。
无论哪种情况,您都需要在密钥库中提供适当的密钥/证书。
最后一种选择是将LDAP服务器配置为通过不安全的连接接受BindSimple凭据。但这是...不安全的...,这样做可能会使基础架构面临风险。不要。