asp.net - 如何配置 IIS,以便在连接到 SQL Server 时使用用户的域凭据?

标签 asp.net impersonation kerberos delegation

我们最近发布了最新版本的 Intranet 应用程序,该应用程序现在使用 Windows 身份验证作为标准,并且需要能够使用最终用户的域凭据连接到已配置的 SQL 服务器。

最近我们发现,在一些客户部署中,尽管 IIS 可以看到用户的域凭据,但它不会将这些凭据传递到 SQL Server。相反,它似乎使用匿名帐户。尽管遵循了所有正确的步骤(将目录安全性更改为 Win Auth、更新 Web.Config 以使用 Win Auth 并拒绝匿名用户),但情况还是如此。

我已经做了很多阅读,表明我们需要确保 Kerberos 就位,但我不确定 (a) 这有多有效(即它真的是一个要求吗?)或 (b )如何着手调查它是否已设置或如何进行设置。

我们面临的情况是,我们需要能够配置 IIS 或应用程序以供客户使用,或者向客户准确解释他们需要做什么才能使其正常工作。

我们已经成功地通过一个测试 SQL 服务器和一个开发人员的 IIS 盒子在我们的内部网络上重现了这个问题,所以我们将搞乱这个设置,看看是否可以找到一个解决方案,但是如果任何人有任何好主意,我会很高兴听到他们!

我特别想听听人们对 Kerberos 的想法或建议。这是一个要求吗?如果是,我如何向客户概述应如何配置?

哦,我还看到一些人提到了域的“经典一跳规则”以及传递 Windows 凭据,但我不知道这实际上有多大影响力?

谢谢!

马特

最佳答案

这称为 Double-Hop Problem并禁止将用户的凭据转发给第三方。当他们从一台计算机浏览另一台计算机(第一跃点)上的站点,并将凭据转发到第三台计算机(第二跃点)时,就会发生这种情况。

如果您在同一台计算机上托管 IIS 和 SQL Server,则不会出现该问题。

How to use the System.DirectoryServices namespace in ASP.NET上发布了更多关于此的技术细节。 ,这解释了双跳问题以及主要和次要 token 。

关于asp.net - 如何配置 IIS,以便在连接到 SQL Server 时使用用户的域凭据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4071929/

相关文章:

asp.net - 在抛出安全警告的 HTTPS 中找到 HTTP 包含的最简单方法?

c# - 如何以编程方式获取/设置(Windows 程序的)可视化组件的数据?

security - 攻击同步时钟协议(protocol)(Kerberos)

c# - 关闭浏览器时运行sql查询

c# - 将 Datalist 导出为每页限制行的 PDF

c# - 组合框下拉列表显示在错误的位置

java - key 斗篷模仿

java - 谁可以在 useradmin 中为 aem 6.3 中的用户添加模拟者

从 Windows 到 Linux 的 HTTP 协商失败

hadoop - kadmin 不能创建 principle 但 kadmin.local 可以