在Web API中实现字段/列级安全性

时间:2014-10-15 13:36:02

标签: c# .net security asp.net-web-api

我有一个.NET Web API,允许客户返回人员和相关数据的详细信息。 系统中有许多非固定角色(它是多租户的),每个角色都可以访问特定的字段,例如管理员可以看到出生日期,非管理员不能。

该应用程序的结构是:

客户端控制器>业务/服务层>存储库>数据库

目前正在通过组合EntityFramework for Add / Update / Delete和Dapper for Queries来管理数据访问。

我的问题是:在现场级别过滤数据到客户端,并在更新数据库中的模型之前从客户端返回是否存在例外标准/通用方法?理想情况下,如果有一些示例代码或应用程序来演示该方法。

我对此的初步想法是在将ViewModel发送到客户端并在更新EntityFramework模型之前执行检查之前对其进行过滤,但这似乎是脱节的。此外,我对这种方式的最佳方法并非百分之百。

我考虑的其他可能性是:

  • 使用格式化程序在发送到客户端之前删除数据,使用自定义安全属性在命中控制器操作之前过滤数据。
  • 远离EntityFramework并实施我自己的安全数​​据访问层来处理所有这些
  • 在数据库级实施安全性
  • 每个角色的每个实体都有一个ViewModel,虽然我已将其与非固定角色一起打折,这可能会很快爆发。

我不了解任何提供现场级安全性的框架,但许多商业产品提供了非常可配置的现场级安全性,例如: SalesForce,Microsoft CRM等。基本上我想实现类似但规模较小的东西。

0 个答案:

没有答案