C#细粒度权限:多个内部系统、内部网场景
我有以下情况:C#细粒度权限:多个内部系统、内部网场景,c#,.net,wcf-security,legacy-code,C#,.net,Wcf Security,Legacy Code,我有以下情况: 多用户(
- 多用户(<100)
- 广告中的用户帐户(在不同组下)
- AD中的每个组对应一个内部部门;每个部门至少有一名主管
- (有人可能会说)我们有交叉监督(存在适用于一组组的监督角色,即可能有一个监督实际监督三个或多个组的监督角色,正如AD中存在的那样)
- 多个内部系统,其中一半是基于web的,都是通过.Net框架构建的
- 系统A基本上由不同的数据表组成(只是在屏幕上显示一些数据)
- 所有的数据表实际上是相同数据的不同分组;该数据指的是特定账户
- 每个帐户行包含列{编号、所有者、类型、数据1、数据2、数据3、数据4…};不同的分组基于编号/所有者/类型
- 所有数据(n)列都是数字(分组完成时显示每个分组的总和)
谢谢,对于基于web的应用程序,只需使用内置ASP.NET提供程序模型单次登录Active Directory即可解决此问题(请参阅:)。您可以使用Active Directory进行身份验证,使用域组进行授权。有几种内置的方法可以限制对页面的访问(使用web.config中的标记)、对页面某些部分的访问(使用)和对代码的访问(使用User.IsInRole()或RolePermission属性)——所有这些都是自动工作的。对于web,这是一种标准(internet或intranet) 对于非基于web的应用程序,实际上仍然可以使用同一提供者模型的功能。您还可以很容易地在Active Directory中查找组成员身份
如果你所需要的只是知道某人所在的群体,那么这可能就是你应该做的。相反,如果您拥有的数据库表有更复杂的内容(如委派授权),那么是的-您可能希望在前面抛出一个WCF服务,并让您的所有应用程序都使用它。然而,在ASP.NET的情况下,我仍然使用提供者模型,只需编写自己的RoleProvider,因此我仍然可以使用ASP.NET安全性的所有内置功能。希望能有所帮助。Rob,谢谢你的回复。事实上,最后一种模式假设使用SQLServer成员资格提供程序;需要的两个定制是a)对成员资格提供商身份验证(我仍然希望根据广告业务合规性要求对用户进行身份验证,这样我就不会为用户提供另一组登录)和b)自定义角色提供程序,这样我就不必为2n个用户提供n个左右的角色。使用WCF路径实际上是一种公开身份验证服务的方法,而无需分发身份验证程序集、使用DCOM等。只是不确定这是否是一种方法-性能是一个问题,而且系统太异构(也就是说,对于windows环境)。由于没有找到任何合适的替代方案,所以正在按回答进行标记。我现在使用CustomRoleProvider。无论如何,谢谢。