我正在尝试从Java查询LDAP,以便让所有用户向同一个经理报告。
当我使用searchFilter查询为 - String searchFilter = "(&(objectClass=user)(sAMAccountName=" + search + "))";
我得到的输出为manager=CN=Eve\, Adam,OU=something,OU=something,OU=StandardUser,OU=User,DC=something,DC=something,DC=something
但是,当我的搜索查询为String searchFilter = "(&(objectClass=user)(manager=CN=Eve*,OU=StandardUser,OU=User,DC=something,DC=something,DC=something))";
OR
String searchFilter = "(&(objectClass=user)(manager=CN=Eve*))";
我没有得到输出。
以下是我尝试获取数据的方式。
String searchBase = "DC=something,DC=something,DC=something";
String returnedAtts[] = {"*"};
SearchControls searchCtls = new SearchControls();
searchCtls.setReturningAttributes(returnedAtts);
NamingEnumeration answer = ctxGC.search(searchBase, searchFilter, searchCtls);
请注意 -
DC=something
肯定有一些价值。
答案 0 :(得分:2)
客户端正在尝试使用带有DN((manager=CN=Eve*)
)的子字符串过滤器。 DN没有子字符串匹配规则,因此子字符串过滤器不能与DN一起使用。在搜索过滤器中指定DN或在搜索请求中指定基础对象时,LDAP客户端必须使用完整的DN,例如cn=user,ou=people,dc=example,dc=com
。