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

Mat*_*ard 7 asp.net impersonation kerberos delegation

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

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

我一直在做大量阅读,这表明我们需要确保Kerberos到位,但我不确定(a)这是多么有效(即它真的是一个要求吗?)或(b)如何去调查它是否已经设置或如何进行设置.

我们的情况是,我们需要能够配置IIS或应用程序为客户工作,或者向客户说明他们需要做些什么才能使其正常工作.

我们已经设法在我们的内部网络上使用测试SQL服务器和开发人员的IIS框重现这一点,所以我们将搞乱这个设置,看看我们是否可以提出解决方案,但是如果有人有任何解决方案聪明的想法,我很高兴听到他们!

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

哦,我也看到有几个人提到域名的'经典单跳规则'和传递Windows凭据,但我不知道这实际上有多少重量?

谢谢!

马特

sis*_*sve 4

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

如果您将 IIS 和 SQL Server 安装在同一台计算机上,则不会出现此问题。

在如何在 ASP.NET 中使用 System.DirectoryServices 命名空间中发布了更多关于此问题的技术细节,其中解释了双跳问题以及主要和辅助令牌。