如何判断 IIS 是否允许将身份验证从 Kerberos 降级到 NTLM v1?

如何判断 IIS 是否允许将身份验证从 Kerberos 降级到 NTLM v1?

据我了解,如果客户端无法处理 Kerberos,则使用 Kerberos 对 IIS 进行身份验证将默认允许身份验证降级到 NTLM v2 或 NTLM v1。就我而言,我有一个只能使用 NTLM v1 的客户端,我想在安装之前知道这在不同环境中是否有效。如何判断 IIS 是否允许这种情况发生?

一些相关说明:

  1. 这些都是来自另一台服务器的 Web 服务请求(而不是基于最终用户浏览器的请求)。
  2. Web 服务托管在 IIS / ASP.NET / SharePoint(2007 和 2010)中。我相信 IIS 负责身份验证(假设是 Windows Auth,而不是 Forms 或 Claims),但如果您知道 ASP.NET 或 SharePoint 可以在这里发挥作用,请告诉我。
  3. 我需要知道 IIS6 和 II7 的答案。
  4. 我已经看到组策略可以对此产生影响。我相信加固指南配置模板可能会阻止 NTLMv1,但不确定。
  5. 看起来像本文对 IIS6 有帮助,但有东西告诉我这可能会以某种方式被组策略覆盖(如上所述)。
  6. 对于 IIS7 我发现如何配置 IIS 7.0 以支持 Kerberos 协议和 NTLM 协议进行网络身份验证。但是,我要么不理解这一点,要么错过了什么。我有一个默认的 IIS7,而我的 IIS_schema.xml 文件似乎没有明确允许 NTLM(见下文)。此外,我关心 IIS6 和组策略覆盖,所以即使我理解了这一点,也只能让我了解一部分。

  <sectionSchema name="system.webServer/security/authentication/windowsAuthentication">
    <attribute name="enabled" type="bool" defaultValue="false" />
    <element name="providers">
      <collection addElement="add" clearElement="clear" removeElement="remove">
        <attribute name="value" type="string" isUniqueKey="true" />
      </collection>
    </element>
    <attribute name="authPersistSingleRequest" type="bool" defaultValue="false" />
    <attribute name="authPersistNonNTLM" type="bool" defaultValue="false" />
    <attribute name="useKernelMode" type="bool" defaultValue="true" />
    <attribute name="useAppPoolCredentials" type="bool" defaultValue="false" />
    <element name="extendedProtection">
        <attribute name="tokenChecking" type="enum" defaultValue="None">
            <enum name="None" value="0" />
            <enum name="Allow" value="1" />
            <enum name="Require" value="2" />
        </attribute>
        <attribute name="flags" type="flags" defaultValue="None">
            <flag name="None" value="0" />
            <flag name="Proxy" value="1" />
            <flag name="NoServiceNameCheck" value="2"/>
            <flag name="AllowDotlessSpn" value="4" />
            <flag name="ProxyCohosting" value="32" />
        </attribute>
        <collection addElement="spn" clearElement="clearSpns" removeElement="removeSpn">
            <attribute name="name" type="string" isUniqueKey="true" validationType="nonEmptyString" />
        </collection>
    </element>
  </sectionSchema>

相关内容