2011-11-05 97 views
7

我正在研究LDAP和Java中基於角色的安全實現。具體而言,我有我需要在LDAP表示以下對象:LDAP中基於角色的安全實現

  • 用戶的用戶
  • 企業集團 - 人力資源,財務等
  • 權限 - DOCUMENT_READ,DOCUMENT_MODIFY等
  • 角色 - ADMIN,GUEST等。

角色基本上是權限組,它們可以分配給用戶或一組用戶。

我想在LDAP其表示爲folows的:

  • 用戶 - 人與uidObject班,userPassword屬性。
  • 用戶組 - organizationUnit類,用戶位於其下的用戶爲 。
  • 角色 - groupOfNames對象類。
  • 權限 - 不確定這個,也許groupOfNames 類。

想法是從用戶或組快速訪問該用戶或組具有的角色列表。我知道我可以將用戶和組放在角色的「成員」屬性中,但是隨後我將不得不掃描所有角色以查找哪些用戶列出了該用戶。有沒有辦法在Person對象中擁有類似「member」屬性的東西?

一般來說,沒有人知道LDAP中基於角色的安全實現嗎?我無法找到有關此主題的良好文檔或教程。我目前使用ApacheDS作爲LDAP服務器,但我願意接受建議。

回答

8

用戶:爲inetOrgPerson

類別:組織單位,但要注意的試圖複製組織結構LDAP目錄:這通常是一個錯誤,因爲組織變化和用戶組織走動。您應該考慮使用ou 屬性

角色:組織角色。我使用groupOfUniqueNames作爲角色組,但那是一個錯誤,我應該一直使用organizationalRole,以便角色只是遞歸的。

權限:這只是一個角色,或角色的屬性。如果您使用CMA,則它們在web.xml中定義,而不是LDAP。

正如我所說的,不要試圖讓你的LDAP樹鏡像你的組織。讓它鏡像它自己的組織。我在任何需要的地方使用多值屬性。我使用organizationalUnit主要用於LDAP本身內的圖層,或者我在上面違反了我的規則;-)

OpenLDAP具有參照完整性疊加層,可以爲您保留大量的這些內容。

有在在LDAP結構中的一些很好的提示由馬特·布徹掌握的OpenLDAP,並在理解這一切更高層次視圖和部署LDAP目錄服務由豪斯

+0

謝謝,我會試試看。 ou屬性是一個好主意。在我的情況下,一個人可以屬於多個組織單位,所以我不確定哪個更好 - 具有多個屬性或可能使groupOfNames也是。 – user1031054

+0

@ user1031054請參閱編輯。 – EJP

+0

好ldap文章:http://www.zytrax.com/books/ldap/ – cleverpig

0

退房堡壘。它符合ANSI RBAC INCITS 359標準,並構建在LDAP上。源代碼是開源的,您可以從這裏下載包含OpenLDAP的預構建二進制文件:http://iamfortress.org/

2

另一個選項:檢查基於屬性的訪問控制()。 ABAC是RBAC的演變。它使用屬性(這是關於用戶,資源,上下文的標籤)和策略來確定什麼是允許的,哪些不是。

示例:如果採購訂單的金額爲< =用戶的審批限額,則在department == sales中具有角色==經理的用戶可以對類型爲==採購訂單的文檔執行操作==編輯。

您可以在NIST website上閱讀關於ABAC的更多信息。