2013-07-19 89 views
0

我正在設計一個基於Soa原則的系統。對於身份驗證,將使用傳統的令牌方法。 但是,根據正在訪問該功能的用戶的角色,需要授權才能在消費者應用程序內激活或取消激活按鈕和標籤。用戶角色感知用戶界面

該應用程序正在wpf(棱鏡)上開發。

有沒有一個知道和經過驗證的方式來處理這個問題?

我們應該設計我們的定製機制嗎?

謝謝!

回答

3

WPF Prism不處理授權(根據this)。所以你需要自己構建解決方案。

我建議看看索賠授權(Managing Claims and Authorization with the Identity Model可以給你高層次的看法)。您可以使用的聲明示例有:「UserCanSaveCustomerSettings」,「UserHasCustomerManagementPrivelege」。

在您將爲您的應用程序配置聲明後,您可以使用此信息來啓用/禁用控件。我可以建議你兩種選擇。

  1. 如果使用MVVM模式,你可以公開訪問信息(例如,你可以從ClaimsPrincipalPermission.CheckAccess得到它)作爲視圖模型的屬性和直接綁定這個屬性來控制。喜歡的東西

  2. 或者你也可以實現IValueConverter,並再次訪問通過ClaimsPrincipalPermission.CheckAccess或通過ClaimsAuthorizationManager.CheckAccess直接索賠。

而且,你可能要採取的帳戶,你不應該立足於安全只是啓用/禁用控制。例如,在WPF中有許多工具(例如Snoop),可以很容易地啓用/取消隱藏/點擊任何控件。您可能還想檢查應用程序/ serice圖層中的訪問權限(您也可以使用基於聲明的授權,請檢查ClaimsPrincipalPermissionAttribute)。

0

幾個答案:

有一個瞭解和處理這一行之有效的方法?

是的,有幾種方法。你正在尋找的是所謂的外部授權(這是一個原則)。不同的框架和語言有不同的手段來實現,例如, Spring Security/Spring EL(在Java Spring世界中)或.NET世界中的MS Claims。有技術解決方案,並且有標準(例如RBAC,ABAC,XACML ...) ABAC,基於屬性的訪問控制模型將允許您在稱爲策略決策點(PDP)的中央位置定義授權,然後將您的不同通過策略執行點(PEP)向PDP提供應用程序和層。這意味着您可以將相同的授權規則應用於表示層(WPF)和其他層(例如WCF的服務層...)

10我們應該設計自定義機制嗎?

否:-)重新使用已存在的內容並儘可能使用標準。出於好奇,您是否重新創建了用於身份驗證的令牌類型,或者您是否使用標準類型SAML還是Kerberos?

聲明:我爲XACML供應商Axiomatics工作。

我不知道任何開源.NET XACML實現,但Axiomatics確實提供了您可能感興趣的商業解決方案。