【问题标题】:AuthenticationType Negotiate vs NTLMAuthenticationType 协商与 NTLM
【发布时间】:2011-01-10 13:52:05
【问题描述】:

我在同一服务器 (IIS 7.5) 上托管的 2 个不同站点上使用了相同的代码库。

由于某种原因,当我检查 http 处理程序背后代码的 Identity.AuthenticationType 属性时,我看到一个站点的 NTLM 和另一个站点的协商。这导致了一些问题,我需要他们两个都使用 NTLM。

您能帮我弄清楚为什么会有这种差异吗?到目前为止,我看到两个 IIS 站点的配置方式相同,但当然至少有 1 个我无法检测到的差异。 谢谢!

编辑
我使用了this 链接,该链接提供了从 IIS 中删除“协商”提供程序的说明。它对我不起作用。我执行了

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

也许我做错了什么,但没有帮助。我仍然将“协商”视为 AuthenticationType

我遇到的问题是我正在设置 web.config 模拟凭据,但它没有使用它们。它不使用我提供的凭据,而是使用匿名用户。

奇怪的是 windowsAuthentication 被禁用了。我以为“协商”仅由 windowsAuthentication 使用。

【问题讨论】:

  • 两个 asp.net 配置文件是否都指定了模拟?两者都在同一个安全区域吗?
  • @Simon:两个文件都指定了模拟。不知道如何检查安全区域。
  • 安全区域是一种 IE 事物(Internet、Intranet、受信任、不受信任)。不适用于其他浏览器。
  • 我正在使用 Firefox 进行测试,所以它似乎不适用 :(
  • 两个站点是否在同一个域中运行?一个站点在域中运行,而另一个站点在工作组中运行?

标签: asp.net iis


【解决方案1】:

Negotiate 将在内部选择 Ntlm 或 Kerberos 身份验证。 如果网站说 Ntlm 只会选择 Ntlm 身份验证。 请检查这两个站点并使身份验证相同。

【讨论】:

    【解决方案2】:

    需要启用 Windows 身份验证并禁用匿名身份验证才能获取登录用户(我在这里假设您正在域上进行身份验证,并且如果用户不希望退回到匿名用户) t 拥有使用 windows auth 的授权凭据)。

    在 IIS7.5 中,要查看正在使用的提供程序,请单击身份验证,右键单击 Windows 身份验证并选择提供程序。您将有一个启用的提供者列表,顺序很重要。尝试确保它们都相同(在您的情况下,NTLM 位于列表顶部)。

    抱歉回复晚了!

    【讨论】:

      【解决方案3】:

      首先要检查的是为每个站点启用的身份验证类型之间是否存在差异。

      默认情况下只启用匿名。

      【讨论】:

      • 感谢您的回答。我在沮丧的道路上检查了数百次,它们是=
      • 网站是否使用不同的应用程序池?
      • 好的,能不能把不工作的站点配置成使用工作站点的应用程序池。如果它现在开始工作,这将与应用程序池或 web.config 相关
      【解决方案4】:

      如果您的 Internet Information Server (IIS) 版本是 7.0,请查看 /Windows/System32/inetsrv/config/ApplicationHost.config 文件中的以下部分:

      <system.webServer> 
          <security> 
              <authentication> 
                  <windowsAuthentication enabled="false">
                      <providers>
                          <add value="Negotiate" />
                          <add value="NTLM" />
                      </providers>
                  </windowsAuthentication>
              </authentication> 
          </security> 
      </system.webServer>
      

      Windows Authentication Providers 的文档可能会提供更多详细信息。

      Remove NEGOTIATE from WindowsAuthentication in IIS 问题提供了删除 Negotiate 的说明,我在尝试重新启用 Negotiate 时发现这些说明很有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-10
        • 1970-01-01
        • 1970-01-01
        • 2014-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多