CIFS 的约束委派失败,出现ACCESS_DENIED错误

本文有助于修复访问在中间层服务器上使用网络共享的服务时发生的 拒绝访问 错误。

适用于:窗口 10 - 所有版本、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019
原始 KB 编号: 2602377

症状

访问在中间层服务器上使用网络共享的服务时,系统会提示用户输入凭据,并且他们最终会遇到 拒绝访问 错误。

示例场景

方案 1

系统提示用户输入凭据,如果满足以下条件,访问最终失败并出现拒绝访问错误:

  • IIS 网站是使用为 CIFS 配置的直通身份验证和约束委派,使用指向远程共享的主目录进行设置的。
  • 访问该共享的 IIS 应用程序池以服务帐户的标识运行。
  • 域帐户在文件服务器上委托 cifs 服务是受信任的。
  • 文件服务器和 Web 服务器正在运行“适用范围”部分中列出的操作系统。

方案 2

  • Web 应用尝试以用户身份访问文件服务器。
  • 访问该共享的 IIS 应用程序池以服务帐户的标识运行。 域帐户在文件服务器上委托 cifs 服务是受信任的。
  • 为 CIFS 配置的约束委派是在文件服务器的服务帐户上配置的。
  • “应用于”部分列出了文件服务器和 Web 服务器类型。

方案 3:

  • 从客户端访问的任何服务器端应用程序都以用户身份访问远程共享。
  • 服务器端应用程序在服务帐户的上下文中运行。
  • 服务帐户受信任,用于委派,并配置为用于文件服务器的 CIFS 委派。
  • “应用于”部分列出了文件服务器和 Web 服务器类型。

原因

这已被确定为 MrxSmb 2.0 与 Kerberos 之间涉及约束委派的问题。

解决方法

解决办法 1

使用计算机帐户而不是服务帐户作为将执行 CIFS 约束委派的应用程序的标识。 当域功能级别为 Windows Server 2003、Windows Server 2008 或 Windows Server 2008 R2 时,配置约束委派。

若要在 Web 服务器域的域控制器上执行此操作,请执行以下步骤:

  1. 依次单击"开始"、"管理工具"和"Active Directory 用户和计算机"。
  2. 展开“域”,然后展开“计算机”文件夹。
  3. 在右窗格中,右键单击 Web 服务器的计算机名称,选择“属性”,然后单击“委派”选项卡。
  4. 选中“仅检查信任此计算机委派到指定的服务”框。
  5. 确保选中“仅使用 Kerberos”,然后单击“确定”。
  6. 单击“添加”按钮。 在“添加服务”对话框中,单击“用户或计算机”,然后浏览到或输入将从 IIS 接收用户凭据的文件服务器的名称。 单击“确定”。
  7. 在“可用服务”列表中,选择 CIFS 服务。 单击“确定”。

解决办法 2

如果必须将应用程序的标识用作服务帐户和/或域帐户,请使用以下解决方法。

注意

不建议使用此解决方法,因为它需要对计算机帐户使用任何身份验证协议委派。 如果选择了“ 使用任何身份验证协议 ”选项,则帐户使用具有协议转换的约束委派。

  1. 依次单击"开始"、"管理工具"和"Active Directory 用户和计算机"。
  2. 展开“域”,然后展开“计算机”文件夹。
  3. 在右窗格中,右键单击 Web 服务器的计算机名称,选择“属性”,然后单击“委派”选项卡。
  4. 选中“仅检查信任此计算机委派到指定的服务”框。
  5. 确保已选择“使用任何身份验证协议”,然后单击“确定”。
  6. 单击“添加”按钮。 在“添加服务”对话框中,单击“用户或计算机”,然后浏览到或输入将从 IIS 接收用户凭据的文件服务器的名称。 单击“确定”。
  7. 在“可用服务”列表中,选择 CIFS 服务。 单击“确定”。
  8. 在左窗格中,展开“用户”文件夹。
  9. 在右窗格中,右键单击应用程序池标识的服务帐户,选择“属性”,然后单击“委派”选项卡。
  10. 选中“仅检查信任此计算机委派到指定的服务”框。
  11. 确保选中“仅使用 Kerberos”,然后单击“确定”。
  12. 单击“添加”按钮。 在“添加服务”对话框中,单击“用户或计算机”,然后浏览到或输入将从 IIS 接收用户凭据的文件服务器的名称。 单击“确定”。
  13. 在“可用服务”列表中,选择 CIFS 服务。 单击“确定”。