2012-08-14 40 views
1

我正在研究運行在不同計算機上的當前運行在不同機器上的以不同語言(Java和C#)編寫的模塊組成的應用程序;因此它不是一個大的,但是,它是分佈式的)。我們正在尋求一種合理的方法來實現功能的基於角色的權限(以配置誰有權調用功能的哪一部分)。分佈式應用程序中基於角色的權限

目前,這是通過將用戶名映射到允許使用的對話元素的GUI ID的自定義數據庫表來解決的(不是我的想法,以防萬一您想知道......)並且讓我們的模塊之一'admin'設置這些值的功能。我有這樣的感覺,但我不確定這種直接寫入這張表的方式不是一個好方法,特別是在併發寫入('admin'模塊)和讀取方面(儘管數據庫事務應該提供併發處理...但是在這種情況下這是否足夠?)。

所以我的想法將是一箇中央服務(最好用C#編寫,但如果Java的框架爲此提供了更好的支持,Java也可以)可訪問的所有模塊都必須訪問它們,設置和讀取權限。這項服務可以防範併發問題。當然,反過來,它依然會使用數據庫來存儲權限。

您如何看待這種方法,服務是不是瓶頸?但對我來說,'感覺'是對的。對我來說不適合的是從頭開始做這件事,就像重新發明輪子一樣。服務可以像(ASP).NET提供的身份驗證和授權子框架一樣嗎?甚至活動目錄?但它的重點似乎更粗糙(文件,目錄,打印機,而不是應用程序內的功能......)。 你能告訴我你有關這個話題的經驗嗎?
非常感謝提前!

以下是一些我在我的搜索過程中發現:
http://en.wikipedia.org/wiki/Role-based_access_control
Storage of Role-based Permissions using ADFS and WIF
Designing a permissions based security model
Best Role-Based Access Control (RBAC) database model

回答

1

我建議利用LDAP設施,如果您正在尋找現成使用​​的解決方案。 Active Directory不僅是支持該協議的解決方案之一,甚至可以使用開源軟件。但考慮到您可以在性能上減少的常見解決方案。我不記得我使用的支持LDAP的開源存儲,但它看起來很慢。因此,最好的方法是將自己的可擴展和高可用存儲作爲服務來實現。

+0

你好Viktor,謝謝你的回答。我們仍然保持目前的方式,直接將其存儲在數據庫中。對於我的模塊,我將編寫一個WCF服務來設置和獲取權限。我將嘗試使用System.Security.Principal。 – juniper 2012-09-12 18:07:29

相關問題