Asp.net mvc 4 自定义基于角色的身份验证

Asp.net mvc 4 自定义基于角色的身份验证,asp.net-mvc-4,authentication,authorization,roles,abac,xacml,alfa,Asp.net Mvc 4,Authentication,Authorization,Roles,Abac,Xacml,Alfa,在asp.net mvc 4应用程序中实现角色和权限的要求非常复杂。我知道ASP.NET身份验证,但这不符合我的要求 我的应用程序中有15-20个控制器,它们有各自的视图,一些视图有部分视图,这些视图在Jquery代码中处理并从那里加载 现在我有以下要求: 1某些控制器只能由特定角色访问。 1控制器中的某些视图只能由特定角色访问。 2在网格视图中,只有特定角色才能访问某些列和操作,如编辑/创建/删除 我正在考虑根据角色对控制器、操作和视图进行检查,但当我将来有多个角色和自定义角色时,这可能会导致

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

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

现在我有以下要求:

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


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

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

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

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

政策语言。您可以使用以下策略语言表达复杂的授权挑战:或。特别是,如果用户部门==记录部门,则可以表示类似Permit的内容。 架构(architecture):该架构确定了具有特定职责的关键组件。例如,您有一个策略决策点PDP,它生成授权决策。您有一个策略实施点PEP,它位于应用程序前面或内部。PEP保护应用程序。 PEP和PDP之间的请求/响应方案。标准格式为是/否问题,如下图所示。JSON可用于对请求进行编码。 在你看来,你有两个选择。要么:

实现基于声明的授权。这是在.NET中提供的OOTB 引入XACML。我不确定.NET是否有任何本机库,但有SDK。
查看基于属性的访问控制。请分享一些链接。