我遇到了一些障碍,不幸的是,我一直无法找到解决问题的具体方法。我会尽力解释这个问题;我希望它有意义......
我遇到了SQL Server和Windows身份验证的工作方式问题。它很复杂,所以我会尽力清楚。
对于此方案,请注意以下内容:
Applications
的数据库,Applications
数据库中有两个名为app1
和app2
的模式,每个架构都包含同名应用程序的所有表,
两个Windows AD组,每个应用程序一个,名为app1_RW
和app2_RW
,
两个.NET应用程序,都使用Windows身份验证模式连接到数据库
Data Source=DATABASEINSTANCENAME;Initial Catalog=APPLICATIONS;Integrated Security=True
当用户打开application1
或application2
时,应用程序会执行以下操作(按此顺序):
检查以确保当前Windows用户是控制该应用程序安全性的相关Windows AD组的成员。
如果他们是该AD组的成员,则允许该应用程序继续,
使用Windows身份验证登录数据库。
问题:
当用户同时是app1_RW
和app2_RW
的成员时,我似乎无法强制登录哪个组。如果用户登录到application1
,我将看到Windows身份验证使用app2_RW
将其记录到数据库中的位置。因此,应用程序失败,因为app2_RW
无法访问运行application1
所需的架构/权限。
我曾希望我的答案就像在连接字符串中指定要登录的Windows AD组一样简单,但据我所知,您无法指定连接字符串的“用户ID”如果Integrated Security=True
。
任何人都可以提供任何帮助吗?我非常想继续使用Windows AD组来管理我的应用程序。如果我错过了任何信息或者我可以澄清,请告诉我。
非常感谢你,祝你有个美好的一天。
答案 0 :(得分:0)
只要2个AD组不是互斥的,您就可以在应用程序中设置关于哪个组是超集的规则并将该组用作登录。如果两组互斥,则再次设置规则以给予最低权限。希望有所帮助。