0

我的 LDAP 连接有问题。当我尝试连接 apache directory studio 桌面时,我成功地进行了身份验证。但是,当我尝试使用 Java 执行此操作时,它失败了。我认为问题出在包含反斜杠“\”的用户名中。

LdapConnection connection = new LdapNetworkConnection(ldapIp, ldapPort);
connection.bind( "uid=foo\\bar,ou=example,dc=example,dc=com", "mysEcretpa55" );

在这种情况下,它说

线程“主”org.apache.directory.api.ldap.model.exception.LdapInvalidDnException 中的异常:意外令牌:b

当我放4个斜线时,它说:

LdapErr:DSID-0C0903C8,注释:AcceptSecurityContext 错误,数据 52e,v2580

我读到 52e 是错误凭据的错误。我将再次重复,我在 apache directory studio 桌面应用程序中验证过,它工作正常。

4

1 回答 1

1

是四个斜线:

connection.bind("uid=foo\\\\bar,ou=example,dc=example,dc=com", "mysEcretpa55");

查看Active Directory中的文档:要转义的字符。

两个反斜杠用于 Java 字符串转义,因此您需要双重转义,一次用于 Java,一次用于 LDAP 语法,以获得单反斜杠低谷。

至于您遇到的 LDAP 错误,Active Directory 拒绝有效密码的情况有很多:例如,从不属于域的客户端(Linux 机器)进行身份验证时,或者您尝试使用的用户验证没有权限登录到客户端计算机。但请仔细检查您的密码。

此 SO 答案中提到的结帐提示,用于针对 Windows 域进行身份验证的替代方法。

于 2015-11-07T13:59:48.737 回答