我在 LDAP 连接方面遇到问题。当我尝试连接 apache Directory Studio 桌面时,我成功进行了身份验证。但是当我尝试用 Java 来做到这一点时,它失败了。我认为问题出在包含反斜杠“\”的用户名中。
LdapConnection connection = new LdapNetworkConnection(ldapIp, ldapPort);
connection.bind( "uid=foo\\bar,ou=example,dc=example,dc=com", "mysEcretpa55" );
在这种情况下,它说
Exception in thread "main" org.apache.directory.api.ldap.model.exception.LdapInvalidDnException: unexpected token: b
当我输入 4 个斜杠时,它会显示:
LdapErr: DSID-0C0903C8, comment: AcceptSecurityContext error, data 52e, v2580
我读到 52e 是凭据错误的错误。我将再次重复一遍,我在 apache Directory Studio 桌面应用程序中进行了验证,它工作正常。
最佳答案
这是四个斜杠:
connection.bind("uid=foo\\\\bar,ou=example,dc=example,dc=com", "mysEcretpa55");
查看 Active Directory: Characters to Escape 中的文档.
两个反斜杠用于 Java 字符串转义,因此需要两次转义,一次用于 Java,一次用于 LDAP 语法,以获得单个反斜杠槽。
对于您收到的 LDAP 错误,Active Directory 在许多情况下会拒绝有效密码:例如,从不属于域的客户端(Linux 机器)进行身份验证时),或者如果您尝试验证的用户没有登录客户端计算机的权限。但请仔细检查您的密码。
this SO answer中提到的结账技巧了解针对 Windows 域进行身份验证的替代方法。
关于java - 如何在 org.apache.directory.ldap.client.api.LdapConnection 中添加带反斜杠的用户名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33563893/