2012-03-27 139 views
37

我需要一個搜索過濾器來顯示特定組的用戶。LDAP查詢列出某個組的所有用戶

我已經試過如下:

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

這:

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

,但一無所獲,請幫我改正。

回答

55

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

9

對於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