据我了解,如果客户端无法处理 Kerberos,则使用 Kerberos 对 IIS 进行身份验证将默认允许身份验证降级到 NTLM v2 或 NTLM v1。就我而言,我有一个只能使用 NTLM v1 的客户端,我想在安装之前知道这在不同环境中是否有效。如何判断 IIS 是否允许这种情况发生?
一些相关说明:
- 这些都是来自另一台服务器的 Web 服务请求(而不是基于最终用户浏览器的请求)。
- Web 服务托管在 IIS / ASP.NET / SharePoint(2007 和 2010)中。我相信 IIS 负责身份验证(假设是 Windows Auth,而不是 Forms 或 Claims),但如果您知道 ASP.NET 或 SharePoint 可以在这里发挥作用,请告诉我。
- 我需要知道 IIS6 和 II7 的答案。
- 我已经看到组策略可以对此产生影响。我相信加固指南配置模板可能会阻止 NTLMv1,但不确定。
- 看起来像本文对 IIS6 有帮助,但有东西告诉我这可能会以某种方式被组策略覆盖(如上所述)。
- 对于 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>