Iis 7 从Windows中删除协商IIS中的身份验证

Iis 7 从Windows中删除协商IIS中的身份验证,iis-7,iis-7.5,windows-authentication,kerberos,Iis 7,Iis 7.5,Windows Authentication,Kerberos,我有一个运行在IIS 7.5中的站点,该站点使用与实际服务器名称不同的DNS别名进行访问。在IE8中,集成身份验证失败,但在Firefox和Chrome中,一切正常。(IE多次显示凭证质询,然后显示401.1错误页面。) 我发现这是由于IE在NTLM上使用Kerberos(也称为“协商”),Kerberos需要注册服务主体名称(使用SETSPN),以便正确处理DNS名称和服务器名称之间的不匹配 然而,我的网站不需要模拟——只要有委托就足够了。因此,我想从IIS中的WindowsAuthentic

我有一个运行在IIS 7.5中的站点,该站点使用与实际服务器名称不同的DNS别名进行访问。在IE8中,集成身份验证失败,但在Firefox和Chrome中,一切正常。(IE多次显示凭证质询,然后显示401.1错误页面。)

我发现这是由于IE在NTLM上使用Kerberos(也称为“协商”),Kerberos需要注册服务主体名称(使用SETSPN),以便正确处理DNS名称和服务器名称之间的不匹配

然而,我的网站不需要模拟——只要有委托就足够了。因此,我想从IIS中的WindowsAuthentication方法列表中删除“协商”,而不是搞乱SetSPN

我已经搜索了相当长的一段时间,以了解如何在IIS中执行此操作。我使用过许多
appcmd
命令,但我无法找到在线示例,也无法通过阅读MSDN文档或使用
appcmd/?
使
appcmd
命令仅适用于站点中的特定应用程序,而不适用于整个web服务器。在两天多的时间里,经过几个小时的搜索,至少访问了3打网页,我仍然没有找到任何结果


我怎么能把这件事做完呢?看起来应该很容易

在IIS中打开配置编辑器。它随IIS 7.5提供,或者您可以下载IIS 7.0的。导航到要影响的范围(服务器、站点或应用程序),然后打开图标:

将该部分更改为
system.webServer/security/authentication/windowsAuthentication

单击
提供者
项目,然后单击右侧的
编辑项目
。选择“协商”项目并单击“删除”:

关闭对话框并单击右侧
操作
窗格中的
应用

你的问题解决了!不再需要Kerberos/协商

注意:您还可以单击操作窗格中的
生成脚本
,从命令行显示将在C#、javascript或appcmd中进行更改的代码

以下是
appcmd
语句,用于在不使用配置编辑器的情况下执行作业,以供参考

appcmd.exe set config "Virtual/path/to/application" -section:system.webServer/security/authentication/windowsAuthentication /-"providers.[value='Negotiate']" /commit:apphost