使用资源数据的ASP.Net WebApi授权

时间:2013-09-18 20:09:03

标签: asp.net security asp.net-web-api authorization actionfilterattribute

在WebApi中,&我将在哪里插入基于资源元数据的授权规则&审计信息。

以下是我目前在请求管道中使用的所有拦截器

  1. IHttpModule的
  2. 委派处理程序
  3. 授权过滤器
  4. ActionFilters
  5. 背景 - 围绕DELETE请求的授权规则基于现有资源周围的审核信息。例如,用户只能删除他创建的资源。因此,如果删除资源的请求来自没有创建它的用户(具有删除权限),我应该返回403错误。

    我不知道如何访问Model&来自我已经使用的4个处理程序中的任何一个的存储库。想知道什么是正确的方法。

1 个答案:

答案 0 :(得分:1)

您在授权规则中写了什么?这是你想要实现的目标吗?我通常建议的模式是使用XACML(可扩展访问控制标记语言)。它就像SAML,但用于细粒度授权。

使用XACML,您将获得一个策略决策点(PDP - 授权引擎/服务),用于评估您的授权规则。 PDP公开了是/否授权API。您需要做的就是将拦截器连接到该PDP。拦截器将创建正确的授权请求并将请求发送到PDP。

这意味着您在所提到的所有4个过滤器中应用了相同的授权逻辑:

  1. IHttpModule的
  2. 委派处理程序
  3. 授权过滤器
  4. ActionFilters
  5. XACML是一种OASIS标准,就像SAML一样。你可以查看他们的homepage。我是该标准的编辑之一,并且 - 免责声明 - 我为其中一个供应商工作,Axiomatics

    XACML还为您提供了细粒度的授权语言。例如,您可以实现以下类型的规则:

    • 当且仅当document.location == user.location
    • 时,具有role == manager的用户可以对type == documents的资源执行操作==编辑

    我希望这会有所帮助。