我有一些问题。
列出的错误:
LDAP error code 8
服务器日志:
javax.naming.AuthenticationNotSupportedException: [LDAP: error code 8 - 00002028: LdapErr: DSID-0C090202, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v2580 ]
问题行动(?):
客户端向服务器发出登录请求。服务器向 LDAP 发送请求。有些人可以成功登录,但有些人登录失败:
LDAP 响应错误代码 8
服务器日志得到 [javax.naming.AuthenticationNotSupportedException: [LDAP: 错误代码 8 - 00002028: LdapErr: DSID-0C090202,注释:如果 SSL\TLS 在连接上尚未处于活动状态,服务器需要绑定来打开完整性检查,数据0,v2580]]
但我正在使用 LDAP。没有 LDAPS。
KRDOM01 : HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ NTDS \ Parameters \ LDAPServerIntegrity = 1
但是我的设置已经是
LDAPServerIntegrity = 1
我的代码:
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://"+host+":"+port);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, principal);
env.put(Context.SECURITY_CREDENTIALS, pwd);
为什么有的人可以登录,有的人登录失败?
这些错误表明您的 LDAP 服务器设置为“需要签名”。
如果您使用 SSL 连接,则不需要数据签名。4
如果您能够成功绑定,那么我会“猜测”您第一次连接到的服务器没有启用签名,并且您将被引用到启用了签名的域控制器。