java - 如何在 org.apache.directory.ldap.client.api.LdapConnection 中添加带反斜杠的用户名?

标签 java ldap apache-directory

我在 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/

相关文章:

java - 带有 Spock Stub 的泛型

java - 阅读 gwt 中 ONPaste 事件的文本

java - 通过 LDAP 查询 Active Directory 组中的所有用户时,为什么某些用户的 userPassword 属性为空?

java - 自定义 LDAP 失败登录尝试计数器

java - Apache Directory Studio java 已启动但返回退出代码=13

java - 为 Android 应用程序登录 "Java Library Code"库

java - 如何将hadoop文件导入intelliJ?

java - 未排序的列表到带有子项的嵌套 json 中

java - 在 java 中使用 LDAPS 从 Active Directory 获取用户