我遇到LDAP连接问题。当我尝试连接apache目录工作室桌面时,我成功地进行了验证。但是当我尝试用Java做这件事时它失败了。我认为问题在于包含反斜杠“\”的用户名。
LdapConnection connection = new LdapNetworkConnection(ldapIp, ldapPort);
connection.bind( "uid=foo\\bar,ou=example,dc=example,dc=com", "mysEcretpa55" );
在这种情况下,它说
线程“main”中的异常org.apache.directory.api.ldap.model.exception.LdapInvalidDnException:意外令牌:b
当我把4个斜杠说:
LdapErr:DSID-0C0903C8,评论:AcceptSecurityContext错误,数据52e,v2580
我读到52e是错误凭证的错误。我将再次重复,我在apache目录工作室桌面应用程序中验证它,它工作正常。
答案 0 :(得分:1)
这是四个斜杠:
int main(){
int i = 0 ; int j = 1;
char key[6]="april",ckey[6];
printf("Enter the key: ");
scanf("%s",ckey);
for(i = 0; i < 6; i++){
if(ckey[i] != key[i])
j=0;
}
if(j == 1)
printf(%s,"Correct.");
else
printf(%s,"Wrong.");
return 0;
}
查看Active Directory: Characters to Escape中的文档。
两个反斜杠用于Java String转义,因此您需要双重转义,一次用于Java,一次用于LDAP语法,以获得单个反斜杠。
对于您收到的LDAP错误,Active Directory拒绝有效密码的情况很多:例如,从不属于域的客户端进行身份验证时( Linux box ),或者如果您尝试进行身份验证的用户没有登录客户端计算机的权限。但请仔细检查您的密码。
this SO answer中提到的结帐提示,了解针对Windows域进行身份验证的其他方法。