Java LDAP搜索似乎无法处理空间

时间:2015-01-15 13:11:22

标签: java ldap

调用javax.naming.ldap.InitialLdapContext的search()方法时,传入DN ...

OU=User Structure, OU=Acecity(LTO), OU=AceCloud,OU=Hosting, DC=AceCloud,DC=local

输出的错误是Authentication failed. failed to authenticate user:[LDAP: error code 32 - 0000208D: NameErr: DSID-0315270B, problem 2001 (NO_OBJECT), data 0.

LdapName baseDN = new LdapName(baseDN
NamingEnumeration results = ctx.search(baseDN, "("+ identity.getBindAttribute() + "=" + acctname + ")", sc);

由于User Structure中的空格而出现问题。当我将用户放在另一个不包含空格的OU中时,我可以进行身份​​验证。我已经尝试了以下所有方法:

OU=User\ Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local
OU=User\20Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local
OU=User\\20Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local
OU=User%Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local
OU=User\ Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local
OU=User\\ Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local
OU=User\\\\ Structure, OU=Acecity(LTO), OU=AcecityCloud,OU=Hosting, DC=AcecityCloud,DC=local

无效。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果未正确转义空格,则可能导致openldap问题。

'OU="User Structure",OU=Acecity(LTO),OU=AceCloud,OU=Hosting,DC=AceCloud,DC=local'

为避免出现问题,请用单引号将整个BINDDN括起来,并用双引号将公用名称(CN),组织单位(OU)或域组件(DC)括起来。