我正在尝试从 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 ))”;
或者
with 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
肯定有一定的值(value)。
最佳答案
客户端正在尝试使用带有 DN 的子字符串过滤器 ((manager=CN=Eve*)
)。 DN 没有子字符串匹配规则,因此子字符串过滤器不能与 DN 一起使用。在搜索过滤器中指定 DN 或作为搜索请求中的基础对象时,LDAP 客户端必须使用完整 DN,例如,cn=user,ou=people,dc=example,dc=com
.
另请参阅
关于java - 在 LDAP 中搜索向同一经理报告的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113950/