首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#细粒度权限:多个内部系统,intranet场景

C#细粒度权限:多个内部系统,intranet场景
EN

Stack Overflow用户
提问于 2010-06-27 15:22:26
回答 1查看 381关注 0票数 0

我有以下情况:

  • 多个用户(< 100)
  • AD中的用户帐户(在不同组下)
  • AD中的每个组对应于一个内部部门;每个部门至少有一个主管。
  • (人们可能会说)我们有交叉监管(有些主管角色可适用于组群,也就是说,可能有一名监督员实际监督三名或小组-就像AD中存在的那样)
  • 多个内部系统,其中一半是基于web的,它们都是通过.Net框架构建的。

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

  • System主要由不同的数据组成(只在屏幕上显示一些数据)。
  • 所有数据实际上都是同一数据的不同分组;此数据指的是特定帐户。
  • 每个帐户行都包含列{number、owner、type、data1、data2、data3、data4 .};不同的分组基于数字/所有者/类型。
  • 所有的数据(N)列都是数字(每个分组的和在分组时显示)

对于这个特定的系统,数据列被归为组。因此,AD Group1中的用户可以看到列数据(1-5),Group2可以查看列数据(7-9)等等。但是,每个组的主管可以为其组看到一个额外的列( Group1的主管可以看到数据(1-5),data6 -让我们称它为组的“特殊列”);有些主管可以看到其他组列(包括“特殊列”或不包括),还有一般主管可以看到所有列,也有用户可以看到所有非特殊列。真是一团糟。

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

这个遗留系统即将被更新的系统所取代;经过大量的考虑(包括可维护性--系统架构是一团糟),因为它只是关于数据检索和显示,我们决定使用(一些)查询和重写数据检索逻辑。

最重要的是,现有的基于web的系统大多是硬代码许可的(if (sADLogin == "userA") {..});其中一些系统只依赖发送给特定用户的超乎直觉的URL。悲伤的。

我们希望对权限使用一种更抽象的方法(这样每个系统都可以使用相同的身份验证提供者)。使用web服务/WCF似乎是合适的(考虑到我仍然需要对基于桌面的系统和一些电子表格进行身份验证,也许使用名称);但是,我找不到合适的模式或体系结构模型。微软文档中有一种WCF Intranet模式可以解决大部分问题--只是我不能将组用作角色。然而,有一个因特网模式(http://msdn.microsoft.com/en-us/library/ff650091.aspx),它似乎处理角色问题(这就是我现在要做的),但是由于这是我第一次处理WCF安全问题,我想就这个问题有一些专家意见。

有什么想法吗?

谢谢,

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-27 23:03:50

对于基于web的应用程序,可以使用内置的ASP.NET提供程序模型(请参阅:http://msdn.microsoft.com/en-us/library/aa478948.aspx),通过对Active的单点登录来简单地解决这一问题。您可以使用Active进行身份验证,也可以使用域组进行授权。有几种内置的方法--可以限制对页面的访问(使用web.config中的标记)、访问页面的某些部分(使用)和访问代码(使用User.IsInRole()或RolePermission属性)--它们都是自动工作的。对于web,这是一种标准(internet或intranet)。

对于非基于web的应用程序,您仍然可以使用相同提供者模型的特性。您还可以很容易地在Active中查找组成员。

如果你只需要知道某人在哪一组,这可能就是你应该怎么做的。如果您拥有的数据库表有一些更复杂的东西(比如委托授权),那么是的--您可能想在前面抛出一个WCF服务,并让您的所有应用程序使用它。但是,在ASP.NET的情况下,我仍然会使用提供者模型,只编写自己的RoleProvider,这样我仍然可以使用ASP.NET安全性的所有内置特性。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3127791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档