仅当Web svcs客户端与IIS服务器位于同一台计算机上时,Windows集成身份验证才会失败

btr*_*ask 3 iis iis-7 web-services windows-authentication

我有一个在IIS7下运行的Web服务,在服务器上设置了主机头,以便它接收对http://myserver1.mydomain.com发出的请求.
我已将Windows INtegrated Authentication设置为Enabled,将其他所有内容(基本,匿名等)设置为Disabled.

我正在使用powershell脚本测试Web服务,当我从工作站运行它时,它可以正常运行http://myserver1.mydomain.com

但是,当我在IIS服务器本身上运行相同的脚本时,我收到401-Unauthorized消息.

另外,我尝试在第二台服务器myserver2.mydomain.com上安装Web服务.我可以再次从我的工作站和myserver1调用我的测试脚本.

因此,似乎唯一的问题是当客户端与Web服务器本身位于同一个盒子上时 - 不知何故,Windows凭据未被传递或识别.

我尝试在myserver1上播放IE设置(选中并取消选中"启用Windows集成身份验证",并将URL添加到本地站点).这似乎没有效果.

当我查看IIS日志时,我看到401未经授权的行,但很少有其他信息.

我在使用IE(v9)测试时看到基本相同的行为 - 从我的工作站开始工作但在IE服务器上运行IE时却没有.

会感激任何线索,或开始调试此问题.

btr*_*ask 8

几个小时后我找到了答案:

默认情况下,如果用于站点的主机头与本地主机的名称不匹配,则会出现一种称为LoopbackCheck的内容,它将拒绝Windows身份验证.仅当客户端位于本地主机上时才会看到此行为.检查是为了打败可能的反射攻击.

更多细节在这里:

http://support.microsoft.com/kb/896861

kb项目讨论了禁用环回检查的方法,但我最终只是从使用主机头切换到端口以区分IIS服务器上的不同站点.

感谢那些提供帮助的人.