web-api中的细粒度访问控制

时间:2013-02-08 00:08:24

标签: asp.net-web-api user-permissions

这更像是一个架构问题。假设我们有不同类型的用户登录系统,我们有一个“客户”实体。根据用户的权限,我可能想要返回“客户”属性的不同子集。我也可能只允许编辑某些属性。

关于走哪条路的任何建议?以下是我想到的选项:

  1. 对于每个权限级别,扩展模型 - 并根据用户权限返回最后面的后代。在输入端,接受最后面的后代,只将它投射到正确的后代。 (看起来像很多隐含的逻辑 - 似乎并不优雅)
  2. 创建不同的方法(混乱的API,意味着比我想要公开的功能更多)
  3. 还有其他建议吗?

    由于

1 个答案:

答案 0 :(得分:2)

您所描述的是XACML的明确用例。 XACML是可扩展的访问控制标记语言。它允许您使用属性(关于用户,资源,环境......)定义细粒度的访问控制。

这是基于政策的,这意味着您可以编写如下内容:

  • 用户可以查看与用户位于同一区域的客户记录
  • 用户可以编辑直接分配给
  • 的客户记录
  • 审核员可以查看除敏感字段以外的整个业务单位的客户记录

有几个XACML引擎(WSO2,Heras AF for Java; Axiomatics for .NET)。

我在.NET 4.0框架中开发了很多ASP .NET Web应用程序,并设法在表示层,WCF层和数据层上应用授权。请随时与我联系以获取更多信息。