我在Win2008 R2上的IIS7.5中托管了一个站点 .

假设服务器名为'prod1',站点绑定到主机名MySite,也绑定到prod1:8080 . 站点的应用程序池在域帐户中运行:domain \ IISuser .

SPN已创建:

  • HTTP / MySite域\ IISUser

  • HTTP / MySite.mycompany.com域\ IISUser

IISUser已配置为不受约束的委派 .

该站点的web.config包含以下内容:

<windowsAuthentication 
    enabled="true" 
    authPersistNonNTLM="true" 
    useKernelMode="true" 
    useAppPoolCredentials="true">
    <providers>
        <clear />
    <add value="Negotiate" />
        <add value="NTLM" />
    </providers>
</windowsAuthentication>

浏览(使用我的公司用户帐户)到 http://MySite ,并且NetMon显示Kerberos身份验证成功 .

问题是我希望也可以浏览到 http://prod1:8080 ,如果需要,身份验证会回退到NTLM,但我收到401错误并重复登录提示(在IE11中) .

在后一种情况下,NetMon显示服务器的第一个响应是(如预期的)401,并包含 WWWAuthenticate: NegotiateWWWAuthenticate: NTLM 标头 .

浏览器使用 Authorization: Negotiate 标头和 HTTP/prod1.mycompany.com 的SPN发出新请求 . 没有这样的SPN,服务器响应是401 - KRB_ERROR - KRB_AP_ERR_MODIFIED,以及 WWWAuthenticate: Negotiate 标头(这次没有NTLM) .

此时我希望浏览器会发出一个NTLM请求,但它会发出另一个与前一个请求相同的协商请求,结果相同 .

我试图支持的场景是否可能 - 如果是这样我在哪里配置错误?