基于自定义角色的身份验证

Custom Role based authentication

我有一个非常复杂的要求来实现我的 asp.net mvc 4 应用程序中的角色和权限。我知道 ASP.NET 身份验证,但这不符合我的要求。

我的应用程序中有 15-20 个控制器,它们有各自的视图,一些视图有部分视图,这些视图在 Jquery 代码中处理并从那里加载。

现在我有以下要求:

1) 某些控制器只能由特定角色访问。 1) 控制器中的某些视图只能由特定角色访问。 2) 在网格的视图中,只有某些列和操作(如 Edit/Create/Delete)只能由特定角色访问。

我正在考虑根据角色对控制器、操作和视图进行检查,但是当我将来有多个角色和自定义角色时,这可能会导致出现问题。实施此类解决方案的最佳方式是什么。任何建议将不胜感激。

每次您有 "complex" 授权要求时,都很好地表明 "identity-centric" 访问控制还不够。什么是身份中心?仅依赖于用户指标(身份、角色、组)的授权。

另外,在你的问题中,你列出了你不知道未来会怎样的事实。您不知道还需要实现哪些自定义角色。

所有这些意味着您需要使用基于属性的访问控制 () 来扩展现有的 RBAC 实现。 ABAC 为您提供了 3 个 RBAC 中没有的有趣元素:

  1. 一种政策语言。您可以使用此策略语言( or 之一)表达复杂的授权挑战。特别是你可以表达类似 Permit if user department==record department.
  2. 架构:架构识别具有特定职责的关键组件。例如,您有一个生成授权决策的策略决策点 (PDP)。您有一个策略执行点 (PEP),它位于您的应用程序之前或内部。 PEP 保护应用程序。
  3. PEP 和 PDP 之间的请求/响应方案。标准格式是 Yes/No 问题,如下图所示。 JSON 可用于对请求进行编码。

从你的角度来看,你有两个选择。或者:

  1. 实施基于声明的授权。这是 .NET 中可用的 OOTB
  2. 引入 XACML。我不确定 .NET 是否有任何本机库,但有 SDK there.