2011-06-05 58 views
6

我開始爲某些現有系統實現使用LDAP的授權和身份驗證機制。在開發階段,我正面臨一個困難的設計決策:應該在哪裏存儲用戶角色?LDAP授權

如果我使用RDBMS,它看起來像會出現三個表:用戶作用user_role的映射角色和用戶。

請提出可用解決方案。我考慮將用戶角色存儲在數據庫和LDAP中的用戶,但不知道這是否是最好的解決方案。我使用JBoss作爲我的應用程序服務器。

回答

7

從架構的角度來看,您有多種解決方案。這是一個將所有數據保存到目錄中的解決方案。

在您的目錄中,您可以使用類別爲「組」的對象編碼「角色」,如groupOfNamesgroup(取決於您的目錄)。用戶分辨名稱(DN)將以這些對象的多值屬性進行編碼(通常爲member)。作爲回報,「角色」對象DN可以用用戶對象的多值屬性編碼(例如:memberof

如果您的目錄支持引用完整性,則它可以充當系統目錄。然後membermemberOf屬性可以由目錄本身進行管理。這意味着如果將用戶從組織單位移動到另一個用戶,則該目錄將刷新用戶所屬的「角色」對象的member屬性。

在另一種情況下(無參考完整性),您的應用程序必須管理屬性完整性。

它很短,但我希望它有幫助。


編輯

渴了所有我建議你Apache Directory Studio,那就是(我)最好的LDAP瀏覽器之一。這個工具將允許您查看您的目錄並更加靈活地學習LDAP。使用這個工具,我會告訴你的ADAM方式(活動目錄應用模式)的微軟的源代碼的免費目錄裏的「角色」

在第一張照片,你可以看到AdminAdam作爲管理員組的成員:

AdminAdam as a member of the administrators group

在第二張圖片中,您可以在用戶adminAdam的屬性memberof中看到該組的存在。

the attribute memberof of the user adminAdam

ADAM被suporting的借鑑完整性。

+0

很難理解,但我會按照這種方式。我是LDAP中的新成員。如果不使你複雜化,可能是你可以提供樹的例子..謝謝! – Tioma 2011-06-06 08:06:47

+0

我編輯了我的答案給你一個樣本。 – JPBlanc 2011-06-06 09:36:40

+0

太棒了。那麼角色的權限呢?我必須以同樣的方式遵循。結果我擔心我會採取非常困難的結構。你怎麼看?再次感謝! – Tioma 2011-06-06 15:23:46