Active directory 如何使用未绑定的LDAP SDK从Active Directory获取用户?

Active directory 如何使用未绑定的LDAP SDK从Active Directory获取用户?,active-directory,unboundid-ldap-sdk,Active Directory,Unboundid Ldap Sdk,我需要从Active Directory获取用户。 根据许多地方包括MSDN 正确的查询是(&(objectClass=user)(objectCategory=person)) 不幸的是,我无法使用未绑定的过滤器创建查询 我创建了以下过滤器: Filter categoryFilter = Filter.createEqualityFilter("objectCategory","Person"); Filter objectFilter = Filter.createEqualityFil

我需要从Active Directory获取用户。 根据许多地方包括MSDN

正确的查询是
(&(objectClass=user)(objectCategory=person))

不幸的是,我无法使用未绑定的过滤器创建查询

我创建了以下过滤器:

Filter categoryFilter = Filter.createEqualityFilter("objectCategory","Person");
Filter objectFilter = Filter.createEqualityFilter("objectClass","user");
Filter searchFilter = Filter.createANDFilter(objectFilter, categoryFilter);
它不会返回结果。 当我查看LDAP对象的objectCategory时,我发现它如下所示:

CN=Person,CN=Schema,CN=Configuration,DC=…,DC=com

因此,我将categoryFilter更改为以下内容:

Filter categoryFilter = Filter.createSubstringFilter("objectCategory", null, new String[]{"Person"}, null);
不幸的是,我仍然没有得到结果

然后我使用categoryFilter和完整的objectCategory名称:

Filter categoryFilter = Filter.createEqualityFilter("objectCategory","CN=Person,CN=Schema,CN=Configuration,DC=…,DC=com"); 
只有在最后一种情况下,我才能得到结果

如何使过滤器更通用? 如何从Active Directory获取完整的objectCategory名称

我需要为任何Active Directory获取
CN=Person,CN=Schema,CN=Configuration,DC=…,DC=com
,同时我知道
objectCategory
Person

您知道为查询创建筛选器的其他方法吗
(&(objectClass=user)(objectCategory=person))

解决方案

(不是我的,因此不想回答)

我使用以下字符串创建了过滤器
(sAMAccountType=805306368)
,它工作得非常完美:

Filter searchFilter =  Filter.create("(sAMAccountType=805306368)");
资料来源: