在 IIS 7.5 中网站的基本设置部分,有一个选项可以通过 指定用户帐户Connect As...
。如果保持关闭,则使用通过身份验证。
我以为会使用应用程序池的身份,但事实并非如此。为了让我的网站在正确的用户帐户下连接到 MSSQL,我必须在屏幕下指定用户Connect As...
。
Connect As...
那么和应用程序池标识有什么区别呢?
答案1
我会推测这可能与计算机通过网络模拟应用程序池身份的能力有关。“连接身份”已保存(并加密)凭据,因此它可以创建完整的主令牌并以该用户身份访问资源。使用“应用程序用户(通过身份验证)”,这将是一个现有令牌并尝试使用该令牌进行模拟。在这种情况下,如果执行模拟的计算机不受信任,则不会成功。
这应该足够容易测试和验证。
该计算机是否受信任以进行委派?在 Active Directory 用户和计算机 > 计算机 > 属性 > 委派选项卡中,选择“信任此计算机以委派任何服务(仅 Kerberos)”。
您可能还需要设置 IIS7 配置设置“useAppPoolCredentials”。可以使用以下命令进行设置:
appcmd.exe set config -section:system.webServer/security/authentication/windowsAuthentication -useAppPoolCredentials:true
useAppPoolCredentials = True,使用 2008 年的 Kerberos 委派
https://blogs.technet.com/b/proclarity/archive/2011/03/08/useapppoolcredentials-true-with-kerberos-delegation-on-2008.aspx
可能相关:
https://stackoverflow.com/questions/3775569/help-with-kerberos-authentication-in-iis-7
答案2
我找到了为什么在使用集成安全性进行 MSSSQL Server 连接字符串时可能会遇到以下错误的原因,尽管在网站的基本设置中将应用程序池标识设置为能够登录的用户帐户并启用了传递身份验证:
Microsoft SQL Server Native Client 10.0 错误“80040e4d”
用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。
转到身份验证,然后编辑匿名用户 - 从默认使用 IUSR 帐户更改为使用应用程序池标识。