1

語境LDAP:是的memberOf/IsMemberOf屬性可靠確定組成員:SUNONE/ActiveDirectory中/ OpenLDAP的

我們從LDAP服務器導入成員時,到我們的應用程序添加組成員的過濾。 (之前我們從給定的ldap「基本DN」導入所有成員;現在管理員可以限制某些組,即基本DN中的成員「Sales」和「HR」)。

我們的應用支持:

  • SUNONE

  • 的Active Directory

此外,我們還計劃支持靜態組只,而不是動態組。

我們如何會做

在過去,我們將使用兩個查找複製成員到我們的數據庫這一新功能。

  1. 查找BaseDN中
  2. 查找所有成員的所有組(帶部件),其中組名是在列表中(例如「銷售」或「HR」)。用編程方式跟蹤「用戶屬於哪個組」的地圖,即使用「組成員」屬性(SunONE中的「uniqueMember」,ActiveDirectory中的「成員」)
  3. #1和#2相交結果以獲得'成員進口'

MemberOf/IsMemberOf是否可以減少查詢和邏輯?

在briefish互聯網研究,我發現SUNONE和ActiveDirectory的具有屬性(isMemberOf /的memberOf)識別「基團,該用戶所屬的」

在理論上,我們可以簡化上述邏輯到一個LDAP查詢:

  1. 查找BaseDN中所有成員是誰的任何組

的memberOf/IsMemberOf能減少查詢的成員和邏輯?

知道的問題: - 的memberOf/isMemberOf只支持靜態組 - 它不支持嵌套組

問題

  • 將這種方法使用的memberOf/IsMemberOf工作?
  • 有什麼要注意的嗎?
  • OpenLDAP或其他服務器呢?他們是否都支持這樣的屬性。(我看到的OpenLDAP有成員 「疊加」,但管理員必須明確啓用它)

參考

的SunOne: http://docs.oracle.com/cd/E19575-01/820-2763/bcajq/index.html

的Active Directory: http://msdn.microsoft.com/en-us/library/ms677943.aspx

相關SO問題: How to write LDAP query to test if user is member of a group?

memberOf vs. groupMembership in LDAP (Liferay)

回答

2
Will this approach using memberOf/IsMemberOf work? 

它將努力受到警告。

Any caveats? 

如果它工作OpenLDAP的執行工作的方式,memberOf屬性只適用於在啓用之後創建的條目。它不會「趕上」。

What about OpenLDAP or other servers? do they all support such an attribute. (I see that OpenLDAP has memberOf "overlay", but an 

管理員必須明確啓用它)

您可以詢問任何LDAP服務器的根DN找出它是否支持該功能。你對OpenLDAP的支持是正確的。

+0

有關Active Directory或SunONE支持此功能的任何問題? – user331465 2012-03-19 15:49:47

+0

「您可以詢問任何LDAP服務器的根DN,以確定它是否支持該功能。」您可以提供示例查詢嗎? – user331465 2012-03-30 15:10:13

+1

@ user331465只需獲取rootDSE的操作屬性即可。 – EJP 2012-07-07 07:20:45

0

我無法對Sun ONE說話,但Active Directory確實支持來自用戶的memberOf屬性,並且您可以對其進行查詢。該屬性是一個多值屬性,它包含用戶所屬組的distinguishedName。

也就是說,您將不得不通過它的dn查詢組,並且不能使用通配符匹配作爲它的一部分。這本質上不支持嵌套組,但是如果需要,我只需將objectCategory添加到查詢屬性中,並檢查「如果此成員是另一組,則重複查找」。

如果你的組結構中有一個循環,這一切都會變得很糟糕,但我很確定許多其他事情也是這樣,AD阻止你這樣做。