0

我遇到了一些障碍,不幸的是,我无法找到我的问题的具体答案。我会尽力解释这个问题;我希望这是有道理的...

我对 SQL Server 和 Windows 身份验证的工作方式有疑问。这很复杂,所以我会尽力说清楚。

对于这种情况,请描绘以下内容:

  • 一个 SQL Server 2008 实例,
  • 在该服务器上,一个名为Applications的数据库
  • Applications数据库中有两个模式称为app1and app2
  • 每个模式都包含同名应用程序的所有表,

  • 两个 Windows AD 组,每个应用程序一个,名为app1_RWand app2_RW

  • 任何给定数量的用户都可以属于这些 AD 组中的一个或两个,
  • 两个 .NET 应用程序,都使用 Windows 身份验证模式连接到数据库

    Data Source=DATABASEINSTANCENAME;Initial Catalog=APPLICATIONS;Integrated Security=True
    

当用户打开application1application2时,应用程序会执行以下操作(按此顺序):

  1. 检查以确保当前 Windows 用户是控制该应用程序安全性的相关 Windows AD 组的成员。

  2. 如果他们是该 AD 组的成员,则允许应用程序继续,

  3. 使用 Windows 身份验证登录到数据库。

问题

当用户同时是app1_RWand的成员时app2_RW,似乎我无法强制哪个组登录。如果用户登录到application1,我将看到 Windows 身份验证使用app2_RW. 因此,应用程序会失败,因为app2_RW无法访问运行所需的架构/权限application1

我曾希望我的答案就像在连接字符串中指定要登录的 Windows AD 组一样简单,但据我所知,如果Integrated Security=True.

任何人都可以提供任何帮助吗?我非常想继续使用 Windows AD 组来管理我的应用程序。如果我错过了任何信息或者我可以澄清,请告诉我。

非常感谢,祝您有美好的一天。

4

1 回答 1

0

只要这 2 个 AD 组不互斥,您就可以在应用程序中设置规则来确定哪个组是超集并将该组用作登录。如果 2 组互斥,则再次设置规则以提供最低权限。希望有帮助。

于 2013-11-26T16:36:43.663 回答