HTTP 401.2远程计算机上的Windows身份验证未经授权的错误

我的网站启用了Windows身份验证,首先列出了协商提供程序,因为我想使用Kerberos进行委派 . 当我从Web服务器本身的浏览器运行网站时,它工作正常 . 当我从域中的另一台机器使用IE时,我得到了登录框 . 经过3次尝试后,我收到HTTP 401.2错误:未经授权 .

我确保应用程序池使用的域帐户具有对网站文件夹的读取和执行权限,我在登录网站时登录的域帐户也是如此(我还在“经过身份验证的用户中” '好的措施) .

有趣的是,如果我尝试使用Web服务器的IP而不是名称访问该站点,它会加载正常 .

有人有想法吗?

回答(2)

2 years ago

在使用DNS名称时获得401.2的原因很可能是由于在AD中注册了您用作服务原则名称(SPN)的名称 .

这里有几个链接可以帮助你:

Service Principal Name (SPN) checklist for Kerberos authentication with IIS 7.0/7.5 http://blogs.msdn.com/b/webtopics/archive/2009/01/19/service-principal-name-spn-checklist-for-kerberos-authentication-with-iis-7-0.aspx

Register a Service Principal Name for Kerberos Connectionshttp://technet.microsoft.com/en-us/library/ms191153.aspx

2 years ago

在我第一次遇到这个问题一年后,我已经解决了这个问题 .

得到了http://blogs.technet.com/b/proclarity/archive/2011/03/08/useapppoolcredentials-true-with-kerberos-delegation-on-2008.aspx的提示

需要在applicationHost.config中的windowsAuthentication元素上设置useAppPoolCredentials =“true”(可以通过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>