Active directory 如何使用未绑定的LDAP SDK从Active Directory获取用户?
我需要从Active Directory获取用户。 根据许多地方包括MSDN 正确的查询是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
(&(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)");
资料来源: