【问题标题】:Custom Role based authentication基于自定义角色的身份验证
【发布时间】:2017-08-26 13:04:03
【问题描述】:

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

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

现在我有以下要求:

1) 某些控制器只能由特定角色访问。 1) 控制器中的某些视图只能由特定角色访问。 2) 在网格视图中,只有特定角色才能访问某些列和操作,例如编辑/创建/删除。

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

【问题讨论】:

  • 查看基于属性的访问控制
  • 你能分享一些链接吗?

标签: asp.net-mvc-4 authentication authorization roles


【解决方案1】:

每当您有“复杂”的授权要求时,都很好地表明“以身份为中心”的访问控制是不够的。什么是以身份为中心?仅依赖于用户指标(身份、角色、组)的授权。

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

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

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

从您的角度来看,您有两个选择。要么:

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

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多