我在Win2008 R2上的IIS7.5中托管了一个站点。
假设服务器名为'prod1',并且该站点绑定到主机名MySite,也绑定到prod1:8080。站点的应用程序池在域帐户中运行:domain \ IISuser。
已创建SPN:
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: Negotiate
和WWWAuthenticate: NTLM
标题。
浏览器使用Authorization: Negotiate
标头和SPN HTTP/prod1.mycompany.com
发出新请求。没有这样的SPN,服务器响应是401 - KRB_ERROR - KRB_AP_ERR_MODIFIED,以及WWWAuthenticate: Negotiate
标题(这次没有NTLM)。
此时我希望浏览器会发出一个NTLM请求,但它会发出另一个与前一个请求相同的协商请求,结果相同。
我试图支持的场景是否可行 - 如果是这样我在哪里配置错误?