在IIS从WindowsAuthentication删除NEGOTIATE(Remove NEGOT

2019-09-01 04:10发布

我在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我得到这个工作 - 现在看来似乎应该是那么容易!

Answer 1:

打开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


文章来源: Remove NEGOTIATE from WindowsAuthentication in IIS