4

我没有使用这个,但这是一个有趣的问题。如果我在 IIS 上设置 Web 应用程序以使用 Windows 身份验证并模拟经过身份验证的用户和我的 ConnectionString 到 SQLServer 数据库使用Integrated Security=true;,我的应用程序在尝试连接到数据库时将使用应用程序验证的用户?

如果是,这是一件好事吗?(该数据库具有 LDAP/AD“域用户”权限。考虑到一个可审计的数据库,每个用户都会记录您的操作。)

4

4 回答 4

3

我相信 EK 的答案只有在使用 kerberos 身份验证的情况下才是正确的。您所描述的被称为“双跳”。本质上,如果用户向“服务器-A”进行身份验证,则“服务器-A”上运行的代码无法转身并使用这些凭据访问其他网络资源,例如“服务器-B”上的 SQL Server。这很详细,但这里有一个直接链接: 博客文章

如果您在 kerberos 架构的网络上运行,那么您可以将服务器标记为受信任的委派服务器。但对大多数人来说,情况并非如此。如果您想了解有关如何执行此操作的更多信息,请参阅此链接

于 2013-11-01T20:40:50.200 回答
2

是的,与 SQL Server 的连接将在这些用户之下。

一般来说,它并不好。但这取决于情况。以下是要考虑的主要因素:

  1. 每个用户都需要自己的连接。即使使用了连接池,也不能重用来自不同用户的连接。创建连接是相对昂贵的操作。而且每个连接都需要一点内存
  2. 每个用户都需要登录(或者至少该用户所属的 Windows 组需要登录)。这可以是创建登录等的额外维护。另一方面,可以以不同的方式保护每个这样的登录。重要的是,如果使用单个帐户连接到 SQL Server,也可以为不同用户保护对象
于 2013-11-01T20:15:50.300 回答
1

是的,它将使用经过身份验证的用户并模拟“经过身份验证的用户”权限来访问数据库。有关更多信息,请查看此链接How To: Use Impersonation and Delegation in ASP.NET 2.0

于 2013-11-08T10:36:29.177 回答
0

另一种方法是使用服务帐户,即对数据库具有完全访问权限的非交互式 Windows 域帐户。

这允许连接池消除复杂的权限模型,例如允许选定的用户对一组数据执行删除。

然而,这确实意味着必须将审计逻辑添加到应用程序的数据层和访问数据库的存储过程中,以确保调用用户作为数据库访问的一部分被记录,否则服务帐户将是唯一的帐户审计表。

于 2013-11-08T02:11:09.653 回答