客户端到 IIS 到 SQL Server 的 Kerberos 身份验证

客户端到 IIS 到 SQL Server 的 Kerberos 身份验证

我希望我的 IIS Web 服务器位于与安装 SQL Server 的虚拟服务器不同的虚拟服务器上,并且所有连接都应使用 Windows 身份验证。我目前收到一个可怕的Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'错误,即在 IIS 服务器上运行的脚本对 SQL Server 运行查询,根据我的所有研究,这指向双跳问题。我尝试设置 SPN 来解决问题,但实际上没有任何进展。这是我目前的情况:

  • 在 IIS 中,我已禁用匿名身份验证,并启用 Windows 身份验证。Negotitiate 提供程序优先于 NTLM 提供程序
  • 应用程序池设置为使用NetworkService
  • 在 ActiveDirectory 中,两个服务器(serveriisserversql)都设置为允许委派所有服务
  • SQL Server 服务使用svc_sql已启用委派的用户运行
  • 我们称之为域名corp.domain.com,我希望能够将其用作internal内联网网站的 URL
  • 我认为该网站不应该使用应用程序池凭据,而应该使用内核模式,尽管我不能 100% 确定这是正确的

我曾尝试使用机器帐户或服务帐户为 HTTP 服务设置 SPN,但没有成功。我设法做出的唯一更改是,ERR_INVALID_AUTH_CREDENTIALS当我使用服务帐户时,Chrome 会给我一个错误。为数据库 ( MSSQLSvc) 设置 SPN 似乎也没有任何作用。我没有尝试对两台服务器使用所有不同的机器帐户/服务帐户排列。我确实花了 2 天时间尝试让它工作,但我在网上找到的所有资源都没有为我提供正确的解决方案。两台虚拟服务器都运行 Windows 2008 R2。如果有人能为我指出一种不需要在与数据库相同的服务器上运行 IIS 的解决方案,我将不胜感激。

相关内容