繁体   English   中英

C#细粒度权限:多个内部系统,Intranet方案

[英]C# fine-grained permissions: multiple internal systems, intranet scenario

我有以下情况:

  • 多个用户(<100个)
  • AD中的用户帐户(在不同组中)
  • AD中的每个小组都对应一个内部部门。 每个部门至少有一名主管
  • (可能会说)我们有交叉监督(存在适用于组组的主管角色,即,可能有一位主管实际上监督三个或针对组的主管-AD中已经存在)
  • 多个内部系统,其中一半基于Web,它们都基于.Net框架构建

当前,我们有大多数基于桌面的系统通过文件夹权限对用户进行身份验证(在网络环境中使用ClickOnce部署,每个部署文件夹均由单个用户允许)。 但是,这并不适用于所有台式机系统。 我们有两个使用自己的嵌入式身份验证系统,如下所示:

  • 系统A基本上由不同的数据表组成(仅在屏幕上显示一些数据)。

  • 实际上,所有数据表都是同一数据的不同分组。 此数据是指特定帐户。

  • 每个帐户行均包含列{编号,所有者,类型,数据1,数据2,数据3,数据4 ...}; 不同的分组基于编号/所有者/类型。

  • 所有data(n)列均为数字(完成分组后,将显示每个分组的总和)

对于此特定系统,数据列归于组。 因此,AD组1中的用户可以看到列数据(1-5),组2中的用户可以看到列数据(7-9),依此类推。 但是,每个组的主管可以看到其组的另一列(Group1的主管可以看到data(1-5)和data6-将该组称为“特殊列”); 有些主管可以查看其他组列(是否包括“特殊列”),有些普通主管可以查看所有列,也有些用户可以查看所有非特殊列。 一团糟。

为了解决这个问题,ClickOnce是不够的。 因此,基本上,开发团队所做的就是嵌入一个特定的授权程序集,该程序集使用当前系统作为参数(它支持其他系统)查询数据库并返回一组列名作为结果; 然后,这些结果将用于另一个仅检索特定用户列的查询中。

这个旧系统将被更新的系统所取代; 经过大量考虑(包括可维护性-系统体系结构一团糟),由于它只涉及数据检索和显示,而处理最少,因此我们决定使用(某些)查询并重新编写数据检索逻辑。

最重要的是,大多数现有的基于Web的系统都经过硬编码许可(如果(sADLogin ==“ userA”){..}); 其中有一些仅依靠发送给特定用户的超级非直觉URL,而且手指交叉。 伤心。

我们想使用一种更为抽象的方法进行许可(这样我们就可以使每个系统使用相同的身份验证提供程序)。 使用Web服务/ WCF似乎很合适(还考虑到我仍然必须对基于桌面的系统和某些电子表格进行身份验证,也许使用绰号); 但是我找不到合适的模式或架构模型。 Microsoft文档中有一个WCF Intranet模式可以解决大多数问题-除了不能将Windows组用作角色之外。 有一种Internet模式( http://msdn.microsoft.com/en-us/library/ff650091.aspx ),但是,这似乎可以解决角色问题(这就是我现在要处理的问题),但是由于这是我第一次处理WCF安全性,我想对此事发表一些专家意见。

有任何想法吗?

谢谢,

对于基于Web的应用程序,可以使用内置的ASP.NET提供程序模型通过单点登录Active Directory来解决(请参阅: http : //msdn.microsoft.com/zh-cn/library/aa478948.aspx )。 您可以使用Active Directory进行身份验证,并使用域组进行授权。 有几种内置方法可以限制对页面的访问(使用web.config中的标记),对页面的某些部分的访问(使用)以及对代码的访问(使用User.IsInRole()或RolePermission属性)-一切都会自动进行。 对于Web,这是一种标准(Internet或Intranet)。

对于非基于Web的应用程序,您实际上仍然可以使用同一提供程序模型的功能。 您还可以轻松地在Active Directory中查找组成员身份。

如果您只需要知道某人所在的组,则可能应该这样做。 如果相反,您拥有的该数据库表具有更复杂的内容(例如委托授权),那么是的-您可能想在其前面放置WCF服务,并让所有应用程序都使用该服务。 但是,对于ASP.NET,我仍将使用提供程序模型,并编写自己的RoleProvider,因此仍可以使用ASP.NET安全性的所有内置功能。 希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM