我在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: Negotiate
和 WWWAuthenticate: NTLM
标头 .
浏览器使用 Authorization: Negotiate
标头和 HTTP/prod1.mycompany.com
的SPN发出新请求 . 没有这样的SPN,服务器响应是401 - KRB_ERROR - KRB_AP_ERR_MODIFIED,以及 WWWAuthenticate: Negotiate
标头(这次没有NTLM) .
此时我希望浏览器会发出一个NTLM请求,但它会发出另一个与前一个请求相同的协商请求,结果相同 .
我试图支持的场景是否可能 - 如果是这样我在哪里配置错误?