我的网站启用了Windows身份验证,首先列出了协商提供程序,因为我想使用Kerberos进行委派。当我从Web服务器本身的浏览器运行网站时,它工作正常。当我从域中的另一台机器使用IE时,我得到了登录框。经过3次尝试后,我收到HTTP 401.2错误:未经授权。
我已确保应用程序池使用的域帐户对网站文件夹具有读取和执行权限,因此我在登录网站时登录的域帐户也是如此(我也投入了“经过验证的用户”可以很好地衡量。)
有趣的是,如果我尝试使用Web服务器的IP而不是名称来访问该站点,那么它可以正常加载。
有人有想法吗?
答案 0 :(得分:5)
在我第一次遇到这个问题一年后,我已经解决了这个问题。
获得提示需要设置useAppPoolCredentials =" true"在applicationHost.config中的windowsAuthentication元素上(可以通过IIS管理器设置)
<system.webServer>
<security>
<authentication>
<anonymousAuthentication enabled="false" />
<windowsAuthentication enabled="true" useKernelMode="true" useAppPoolCredentials="true">
<providers>
<clear />
<add value="Negotiate" />
</providers>
<extendedProtection tokenChecking="None" />
</windowsAuthentication>
</authentication>
</security>
</system.webServer>
答案 1 :(得分:2)
在使用DNS名称时获得401.2的原因很可能是因为在AD中注册了您用作服务原则名称(SPN)的名称。
以下是一些可以帮助您的链接:
使用IIS 7.0 / 7.5进行Kerberos身份验证的服务主体名称(SPN)核对表 http://blogs.msdn.com/b/webtopics/archive/2009/01/19/service-principal-name-spn-checklist-for-kerberos-authentication-with-iis-7-0.aspx
为Kerberos连接注册服务主体名称: http://technet.microsoft.com/en-us/library/ms191153.aspx