LDAP查询列出某个组的所有用户

问题描述:

我需要一个搜索过滤器来显示特定组的用户。LDAP查询列出某个组的所有用户

我已经试过如下:

(& 
    (objectCategory=user) 
    (memberOf=MyCustomGroup) 
) 

这:

(& 
    (objectCategory=user) 
    (memberOf=cn=SingleSignOn,ou=Groups,dc=tis,dc=eg,dc=ddd,D‌​C=com) 
) 

,但一无所获,请帮我改正。

memberOf(在AD中)存储为distinguishedName的列表。你的过滤器需要是这样的:

(&(objectCategory=user)(memberOf=cn=MyCustomGroup,ou=ouOfGroup,dc=subdomain,dc=domain,dc=com)) 

如果您还没有分辨名称,你可以搜索它:

(&(objectCategory=group)(cn=myCustomGroup)) 

,并返回属性distinguishedName。情况可能很重要。

+1

什么是ou = ouOfGroup? – 2012-03-27 13:06:21

+6

通常在Active Directory中,您有许多包含该结构的组织单位。组的默认根OU是组。很可能是cn = MyCustomGroup,ou = Groups,dc = subdomain,dc = domain,dc = com会为你工作。 如果不行,我会建议对你的组进行LDAP搜索(&(objectCategory = group)(cn = MyCustomGroup))并在结果集中包含distinguishedName属性。这将告诉你在你的其他查询中使用什么字符串 – Kodra 2012-03-27 13:13:44

+0

我做了你所说的,但我没有使用以下结果:(&(objectCategory = user)(memberOf = cn = SingleSignOn,ou = Groups,dc = tis,dc =例如,dc = ddd,DC = com)) – 2012-03-27 13:16:08

对于Active Directory用户,另一种方法是 - 假定您的所有组都存储在OU=Groups,DC=CorpDir,DC=QA,DC=CorpName中 - 使用查询(&(objectCategory=group)(CN=GroupCN))。对于所有成员少于1500人的团队来说,这将很有效。如果您想列出大型广告组的所有成员,则同一个查询可以正常工作,但您必须使用ranged retrieval才能一次获取所有成员的1500条记录。

执行分段检索的关键是使用以下语法在属性中指定范围:属性;范围=低 - 高。因此,要获取包含3000个成员的AD组的所有成员,请首先运行上述查询,要求返回member;range=0-1499属性,然后再获取member;range=1500-2999属性。

+0

不要忘记指定'(CN = GroupCN)'。我试图请求所有组,并且直到我指定它才会工作。当你指定范围时,你也可以使用星号:'member; range = 1500- *' - 它也很好。 – Stalinko 2016-07-26 10:30:26