我在IIS 7.5上运行一个网站,使用从实际的服务器名称不同的DNS别名访问。 在IE 8中,集成的身份验证失败,但在Firefox和Chrome一切工作正常。 (IE呈现凭证挑战了几下,然后显示一个401.1错误页面。)
我已经想通了,这(又名“协商”)在NTLM是使用Kerberos由于IE和Kerberos需要注册一个服务主体名称(使用SETSPN),使得DNS名称和服务器名称之间的不匹配得到妥善处理。
我的网站上,然而,这并不需要模仿 - 这是足有代表团。 因此,与其用的SetSPN搞乱,我只是想从IIS中WindowsAuthentication方法列表中删除“协商”。
我搜索了相当长的一段时间去找出如何在IIS做到这一点。 我打了许多appcmd
命令-但我就是无法找到网上的例子,或找出如何通过阅读MSDN文档或使用appcmd /?
使appcmd
命令只有一个站点内,向特定的应用程序,而不是对整个Web服务器。 几个搜索小时后两天,并且至少3名访问过的网页,我还是来了无果而终。
如何在tarnation我得到这个工作 - 现在看来似乎应该是那么容易!
打开IIS中的配置编辑器。 它配备了IIS 7.5中,或者您也可以下载IIS管理包的IIS 7.0。 导航到要影响(服务器,站点或应用程序),然后打开该图标范围:
。
更改科system.webServer/security/authentication/windowsAuthentication
:
点击providers
的项目,然后单击Edit Items
的权利。 选择“协商”项,然后单击“删除”:
关闭对话框,然后点击Apply
中的Actions
在右窗格。
你的问题就解决了! 没有更多的Kerberos /洽谈!
注意 :您也可以单击Generate Script
操作窗格中显示的代码,这将使改变使用C#,JavaScript或使用命令行APPCMD。
作为参考,这里是appcmd
语句来完成这项工作,而无需使用配置编辑器。
appcmd.exe set config "Virtual/path/to/application" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost