如何授予对特定资源的访问权限?

时间:2014-09-02 13:17:01

标签: c# .net rest authorization asp.net-web-api

问题: 我有一组信息,一些用户必须通过我的Web应用程序访问它们。假设我有相同类型T的资源A,B,C,用户是X,Y,Z。业务表明用户可以访问这些资源,如下表所示。

用户 - >资源
X - >一个
Y - > A C
Z - > A B C

现实世界的例子将是这样的:

  • 用户X可以看到L.A。
  • 的所有大卖场
  • 用户Y可以看到L.A.和芝加哥的所有大卖场
  • 用户Z可以查看来自L.A.,Chicago和N.Y。
  • 的所有大卖场

另外需要提及的是,在任何时候,用户X都可以被授予从N.Y.看大型超市的权限。

问题: 如何实现授权系统,以便允许我授予用户访问特定资源集的权限?

我的第一个想法: 由于我将使用ASP.NET MVC和Web API,我首先想到的是使用基于角色的授权。之后,我发现this article关于如何将基于角色的授权概念扩展到所谓的“基于活动”的授权。 但是,即使这个解决方案也不适合我的业务,​​因为在我的代码中我必须有一个名为GetAllHypermarkets的函数,没有参数,这将返回允许用户查看的所有大型超市。例如,对于用户X,它将仅返回来自L.A的大型超市。我如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

有许多有趣的术语可以帮到你:

  • ABAC - 基于属性的访问控制
  • PBAC - 基于策略的访问控制
  • RAdAC - 风险自适应访问控制
  • SitBAC - 基于情境的访问控制

我想每个人都希望安全专业人员拥有一个命名的访问控制解决方案,这就是为什么大量名称难以理解的原因...

来自这些ABAC的AFAIK是最精心设计的解决方案。例如,甚至有markup language支持ABAC ......我建议您使用google或https://security.stackexchange.com/获取更多详细信息,因为我不是安全专家,所以我可能有错误的信息条款。我会发送一个"差异"在你的名字中键入问题,但是我猜他们会用1000个downvotes踢我的屁股......