Asp.net web api webapi中的细粒度访问控制

Asp.net web api webapi中的细粒度访问控制,asp.net-web-api,user-permissions,Asp.net Web Api,User Permissions,这更像是一个架构问题。假设我们有不同类型的用户登录到一个系统,并且我们有一个“客户”实体。根据用户的权限,我可能希望返回“customer”属性的不同子集。我还可能只允许编辑某些属性 有没有关于走哪条路的建议?以下是我想到的thusfar的选项: 对于每个权限级别,扩展模型并根据用户权限返回最远的子体。在输入端,接受最远的子体,并仅将其强制转换为正确的子体。(似乎有很多隐含的逻辑——似乎不太优雅) 创建不同的方法(凌乱的API,意味着比我想要公开的更多的功能) 还有其他建议吗 谢谢您所描述的是一

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

有没有关于走哪条路的建议?以下是我想到的thusfar的选项:

  • 对于每个权限级别,扩展模型并根据用户权限返回最远的子体。在输入端,接受最远的子体,并仅将其强制转换为正确的子体。(似乎有很多隐含的逻辑——似乎不太优雅)
  • 创建不同的方法(凌乱的API,意味着比我想要公开的更多的功能)
  • 还有其他建议吗


    谢谢

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

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

    • 用户可以查看与用户位于同一地区的客户记录
    • 用户可以编辑直接分配给他们的客户记录
    • 审计员可以查看整个业务部门的客户记录,敏感字段除外
    有几个XACML引擎(WSO2、Heras AF for Java;)

    我已经在.NET4.0框架中开发了很多ASP.NETWeb应用程序,并设法在表示层、WCF层和数据层应用授权。如需更多信息,请随时与我联系