我有一个在 IIS 7.5 中运行的站点,该站点使用与实际服务器名称不同的 DNS 别名进行访问。在 IE 8 中,集成身份验证失败,但在 Firefox 和 Chrome 中一切正常。(IE 多次提出凭据质询,然后显示 401.1 错误页面。)
我发现这是由于 IE 在 NTLM 上使用 Kerberos(又名“协商”),而 Kerberos 需要注册服务主体名称(使用 SETSPN),以便正确处理 DNS 名称和服务器名称之间的不匹配。
然而,我的网站不需要模拟——拥有授权就足够了。因此,我不想弄乱 SetSPN,而是想从 IIS 中的 WindowsAuthentication 方法列表中删除“协商”。
我已经搜索了相当长的时间来了解如何在 IIS 中执行此操作。我玩过很多appcmd
命令——但我就是找不到在线示例,或者通过阅读 MSDN 文档或使用appcmd /?
使appcmd
命令仅适用于站点内的特定应用程序而不是整个 Web 服务器来弄清楚如何。两天后的几个搜索小时,至少访问了 3 打网页,我仍然没有结果。
我是如何完成这项工作的——看起来应该很容易!