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时却没有.
会感激任何线索,或开始调试此问题.
几个小时后我找到了答案:
默认情况下,如果用于站点的主机头与本地主机的名称不匹配,则会出现一种称为LoopbackCheck的内容,它将拒绝Windows身份验证.仅当客户端位于本地主机上时才会看到此行为.检查是为了打败可能的反射攻击.
更多细节在这里:
http://support.microsoft.com/kb/896861
kb项目讨论了禁用环回检查的方法,但我最终只是从使用主机头切换到端口以区分IIS服务器上的不同站点.
感谢那些提供帮助的人.
| 归档时间: |
|
| 查看次数: |
3369 次 |
| 最近记录: |