我希望我的 IIS Web 服务器位于与安装 SQL Server 的虚拟服务器不同的虚拟服务器上,并且所有连接都应使用 Windows 身份验证。我目前收到一个可怕的Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
错误,即在 IIS 服务器上运行的脚本对 SQL Server 运行查询,根据我的所有研究,这指向双跳问题。我尝试设置 SPN 来解决问题,但实际上没有任何进展。这是我目前的情况:
- 在 IIS 中,我已禁用匿名身份验证,并启用 Windows 身份验证。Negotitiate 提供程序优先于 NTLM 提供程序
- 应用程序池设置为使用
NetworkService
- 在 ActiveDirectory 中,两个服务器(
serveriis
和serversql
)都设置为允许委派所有服务 - SQL Server 服务使用
svc_sql
已启用委派的用户运行 - 我们称之为域名
corp.domain.com
,我希望能够将其用作internal
内联网网站的 URL - 我认为该网站不应该使用应用程序池凭据,而应该使用内核模式,尽管我不能 100% 确定这是正确的
我曾尝试使用机器帐户或服务帐户为 HTTP 服务设置 SPN,但没有成功。我设法做出的唯一更改是,ERR_INVALID_AUTH_CREDENTIALS
当我使用服务帐户时,Chrome 会给我一个错误。为数据库 ( MSSQLSvc
) 设置 SPN 似乎也没有任何作用。我没有尝试对两台服务器使用所有不同的机器帐户/服务帐户排列。我确实花了 2 天时间尝试让它工作,但我在网上找到的所有资源都没有为我提供正确的解决方案。两台虚拟服务器都运行 Windows 2008 R2。如果有人能为我指出一种不需要在与数据库相同的服务器上运行 IIS 的解决方案,我将不胜感激。