iis-7 - 从IIS中的WindowsAuthentication中删除NEGOTIATE

标签 iis-7 iis-7.5 windows-authentication kerberos

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

我发现这是由于IE在NTLM上使用Kerberos(又称“协商”)引起的,并且Kerberos要求注册服务主体名称(使用SETSPN),以便DNS名称和服务器名称之间的不匹配得到正确处理。

但是,我的网站不需要模拟-仅需委派即可。因此,我不想将SetSPN弄乱,而只是想从IIS中的WindowsAuthentication方法列表中删除“Negotiate”。

我已经搜索了很长时间,以了解如何在IIS中执行此操作。我玩过许多appcmd命令-但我只是找不到在线示例,也无法通过阅读MSDN文档或使用appcmd /?来使appcmd命令仅适用于站点内的特定应用程序,而不适用于整个Web服务器。在两天后的几个小时的搜索中,至少访问了3十二个网页,但我仍然无果而终。

我该如何做这件事-似乎应该这么简单!

最佳答案

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



将Section更改为system.webServer/security/authentication/windowsAuthentication:

单击providers项,然后单击右侧的Edit Items。选择“协商”项,然后单击“删除”:

关闭对话框,然后在右侧Apply Pane 中单击Actions

您的问题已解决!不再需要Kerberos/协商!

注意:您也可以在操作 Pane 中单击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

关于iis-7 - 从IIS中的WindowsAuthentication中删除NEGOTIATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222946/

相关文章:

asp.net - 仅一个 URL 的 HTTP 到 HTTPS 重定向

json - 错误 404.3 未找到 JSON 文件

active-directory - 保留 Windows 身份验证权限 token ,允许以后进行模拟

c# - UIWebView 中的 Windows 身份验证 url 没有响应,没有错误,请求无限期旋转 - Xamarin.iOS

visual-studio-2010 - Web 部署 - 将根部署配置为默认值

iis - 无法安装 Powershell 管理单元

asp.net - IIS 7.5 (Windows 7) 中是否缺少默认的 ASHX 处理程序映射?

asp.net-mvc - 带有Windows身份验证的ASP.NET MVC Intranet应用程序,如何自动获取当前域用户?

c# - 请求限制是否以 BITS/BYTES 为单位?

iis - 为什么当我在 IIS 中创建应用程序池时会创建新的 Windows 用户配置文件