2017-04-01 170 views
0

我有一個非常複雜的需求來實現我的asp.net mvc 4應用程序中的角色和權限。我知道ASP.NET身份驗證,但這不符合我的要求。基於自定義角色的身份驗證

我有15-20控制器在我的應用程序有其各自的看法,一些視圖有部分視圖正在Jquery代碼中處理並從那裏加載。

現在我有如下要求:

1)有些控制器是隻有perticular角色(一個或多個)進行訪問。 1)控制器中的某些視圖僅可用於某個特定角色。 2)在網格視圖中,只有一些列和動作(如編輯/創建/刪除)只能訪問特定角色。

我想在角色的基礎上實施對控制器,操作和視圖的檢查,但在將來我有多個角色和自定義角色時會導致問題。什麼是最好的方式來實現這種解決方案。任何建議將不勝感激。

+0

查找到基於屬性的訪問控制 –

+0

能否請你分享它的鏈接。 – ChupChapCharli

回答

0

每當您有「複雜」的授權要求時,「身份爲中心」的訪問控制是不夠的。什麼是以身份爲中心?僅依賴於用戶指標(身份,角色,組)的授權。

此外,在你的問題中,你列出了你不知道未來會發生什麼的事實。你不知道你需要實現哪些其他自定義角色。

所有這些意味着您需要使用基於屬性的訪問控制()來擴展現有的RBAC實現。 ABAC爲您提供了3個您在RBAC中沒有的有趣元素:

  1. 政策語言。您可以使用此策略語言()表示複雜的授權挑戰。特別是你可以表示像許可證,如果用戶部門==記錄部門
  2. 架構:該架構識別具有特定職責的關鍵組件。例如,您有一個制定授權決策的策略決策點(PDP)。您有一個策略執行點(PEP),它是位於應用程序之前或之內的一個部分。 PEP保護應用程序。
  3. PEP和PDP之間的請求/響應方案。標準格式是一個是/否的問題,如下圖所示。 JSON可用於編碼請求。

從您的角度來看,您有兩種選擇。要麼:

  1. 實施基於聲明的授權。這在.NET中可用OOTB
  2. 引入XACML。我不確定.NET有沒有任何本地庫,但有SDKs出there

ABAC/XACML Architecture - Axiomatics

相關問題