如何使用搜索过滤器显示特定组的用户?
我尝试了以下方法:
(&
(objectCategory=user)
(memberOf=MyCustomGroup)
)
和这个:
(&
(objectCategory=user)
(memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,DC=com)
)
但都不显示特定组的用户。
如何使用搜索过滤器显示特定组的用户?
我尝试了以下方法:
(&
(objectCategory=user)
(memberOf=MyCustomGroup)
)
和这个:
(&
(objectCategory=user)
(memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,DC=com)
)
但都不显示特定组的用户。
memberOf(在 AD 中)存储为 distinctNames 列表。您的过滤器需要类似于:
(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com))
如果您还没有专有名称,您可以使用以下命令进行搜索:
(&(objectCategory=group)(cn=myCustomGroup))
并返回属性distinguishedName
。案件可能很重要。
对于 Active Directory 用户,另一种方法是 - 假设所有组都存储在OU=Groups,DC=CorpDir,DC=QA,DC=CorpName
其中 - 使用查询(&(objectCategory=group)(CN=GroupCN))
。这适用于所有成员少于 1500 人的团体。如果您想列出一个大型 AD 组的所有成员,则可以使用相同的查询,但您必须使用范围检索来获取所有成员,一次 1500 条记录。
执行范围检索的关键是使用以下语法指定属性中的范围:attribute;range=low-high。因此,要获取具有 3000 个成员的 AD 组的所有成员,首先运行上面的查询,要求member;range=0-1499
返回属性,然后是member;range=1500-2999
属性。
如果 DC 是 Win2k3 SP2 或更高版本,您可以使用类似:
(&(objectCategory=user)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com))
获取嵌套组成员身份。
来源:https ://ldapwiki.com/wiki/Active%20Directory%20Group%20Related%20Searches
如果您需要在多个组中搜索,则更复杂的查询:
(&(objectCategory=user)(|(memberOf=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupTwo,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf=CN=GroupThree,OU=Security Groups,OU=Groups,DC=example,DC=com)))
递归的相同示例:
(&(objectCategory=user)(|(memberOf:1.2.840.113556.1.4.1941:=CN=GroupOne,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupTwo,OU=Security Groups,OU=Groups,DC=example,DC=com)(memberOf:1.2.840.113556.1.4.1941:=CN=GroupThree,OU=Security Groups,OU=Groups,DC=example,DC=com)))