2012-06-13 110 views
0

我用下面的查詢來查找組的每個用戶的成員:期廣義LDAP查詢組

(&(objectClass=group)(|(member=cn=UID,OU=ServiceAccounts,OU=MC,DC=ads,DC=myCompany,DC=com,DC=au)(member=cn=UID,OU=BTLY,OU=Sites,OU=MC,DC=ads,DC=myCompany,DC=com,DC=au)))

這個查詢工作,並運行使用下列基本DN:

OU=MC,DC=ads,DC=myCompany,DC=com,DC=au

我與查詢幾個問題:

  • 我不喜歡使用OR運算符來查找服務帳戶用戶和BTLY用戶。
  • 我不想硬編碼BTLY網站,也有其他人。

理想情況下,我只是想有作爲查詢:

(&(objectClass=group)(|(member=cn=UID,OU=MC,DC=ads,DC=myCompany,DC=com,DC=au))

這樣,我不關心用戶帳戶是服務帳戶,也不帳戶所屬的網站至。不幸的是,該查詢不起作用。

有人能幫我推廣LDAP查詢嗎?我有點新手,所以我很可能錯過了一些完全明顯的東西!

謝謝!


感謝您的回覆。你所說的話是有道理的,但不幸的是,它對我無能爲力。我們使用的是GlassFish(一種Java應用服務器),並將其配置爲指向本地AD服務器。通常情況下,一個人可以告訴GlassFish中如何獲取用戶,如

(&(objectCategory=user)(CN=UID))

和GlassFish將拿起所有組(也許通過使用memberOf屬性)。

這次我們使用了一個不同的AD服務器,它託管着不同的用戶目錄。 GlassFish無法自行檢索組。因此,我們可以爲GlassFish提供一個自定義查詢來查找組。在這個領域,我把我發佈的查詢的工作,但醜陋和冗長。

我很想能夠做到的是:

(&(objectClass=group)(member=cn=UID))

但這不起作用。

有沒有辦法做到這一點?

謝謝, Muel。

回答

0

我的猜測是使用這種技術是不可能的。您將需要在這裏使用通配符:

(&(objectCategory=group)(member=CN=UID,*)) 

,這是不能接受的DN屬性(如一個存儲在「成員」屬性):

http://msdn.microsoft.com/en-us/library/ms676930(v=vs.85).aspx

這裏我的建議是:使用一些工具爲你生成'醜陋'的查詢(使用上面提到的語法)並以最終結果「喂」你的工具。看不到任何選項,對不起...

+0

有趣的是,我昨天嘗試了通配符沒有成功。我也嘗試使用子查詢,這也不起作用。我從那以後讀了LDAP不支持這樣的查詢。感謝MS鏈接,閱讀一些明確的內容是很好的!我將把這個問題留在稍微長一點的問題上。:) – Muel

0

我只是試圖重新表達你的問題,但它的評論文字太多了。

您正在嘗試查找用戶CN=UID所屬的所有組,並且始於OU=MC,DC=ads,DC=myCompany,DC=com,DC=au

這可以通過檢索用戶本身的memberOf屬性來完成。唯一的問題(可能不是你的情況)是主要組不在這個DN列表中,它是使用primaryGroupId屬性編碼的appart。

所以

(&(objectCategory=user)(CN=UID)) 

將做的工作測試:

ldifde -f t.ldf -D "OU=MC,DC=ads,DC=myCompany,DC=com,DC=au" -r "(&(objectCategory=user)(CN=UID))" -l memberof 

備註:samAccountNameuserPrincipalName是你可以依靠在活動目錄條目的獨特屬性,是不是CN的情況下(管理員可以改變它)