我有以下情况:
- 多个用户 (< 100)
- AD 中的用户帐户(在不同的组下)
- AD中的每个组对应一个内部部门;每个部门至少有一名主管
- (有人可能会说)我们有交叉监督(有适用于一组组的主管角色,即,可能有一个主管实际上监督三个或组 - 正如 AD 中存在的那样)
- 多个内部系统,其中一半基于 Web,均基于 .Net 框架构建
目前,我们有大多数基于桌面的系统通过文件夹权限对用户进行身份验证(使用 ClickOnce 部署在网络环境中,每个部署文件夹都由单个用户授予权限)。但是,这不适用于所有桌面系统;我们有两个使用自己的嵌入式身份验证系统,如下所示:
系统 A 基本上由不同的数据表组成(只是在屏幕上显示一些数据)。
所有的数据表实际上都是相同数据的不同分组;此数据是指特定帐户。
每个帐户行包含列 {number, owner, type, data1, data2, data3, data4 ...};不同的分组基于数量/所有者/类型。
所有数据(n)列都是数字(分组完成时显示每个分组的总和)
对于这个特定系统,数据列属于组。因此,AD Group1 中的用户可以看到列数据(1-5),Group2 可以看到列数据(7-9)等等。但是,每个组的主管可以看到他们组的一个额外列(Group1 的主管可以看到 data(1-5) 和 data6 - 我们称之为组的“特殊列”);有主管可以看到其他群组栏目(包括“专栏”或不包含),有普通主管可以看到所有栏目,也有用户可以看到所有非特殊栏目。一团糟。
为了解决这个问题,ClickOnce 是不够的;所以基本上开发团队所做的就是嵌入一个特定的授权程序集,它使用当前系统作为参数查询数据库(它支持其他系统)并返回一组列名作为结果;然后将这些结果用于仅检索特定用户列的另一个查询中。
这个遗留系统即将被更新的系统取代;经过大量考虑(包括可维护性 - 系统架构一团糟),因为它只是关于数据检索和以最少的处理显示,我们决定使用(一些)查询并重新编写数据检索逻辑。
最重要的是,大多数现有的基于 Web 的系统都是硬编码许可的 (if (sADLogin == "userA") {..}); 其中一些只依赖于发送给特定用户和手指交叉的超非直观 URL。伤心。
我们希望使用更抽象的方法来获得许可(这样我们就可以让每个系统都使用相同的身份验证提供程序)。使用 Web 服务/WCF 似乎是合适的(还考虑到我仍然需要验证基于桌面的系统和一些电子表格,可能使用名字);但是我找不到合适的模式或架构模型。Microsoft 文档中有一个 WCF Intranet 模式可以解决大部分问题 - 除了我不能将我的 Windows 组用作角色。有一个 Internet 模式(http://msdn.microsoft.com/en-us/library/ff650091.aspx),但是,它似乎可以处理角色问题(这就是我现在要做的),但是因为这是我第一次处理 WCF 安全问题
有任何想法吗?
谢谢,