访问被拒绝 - CIFS 的约束委派失败

在访问使用中间层服务器上的网络共享的服务时,系统会提示用户输入凭据,最终会遇到拒绝访问错误。在今天的博文中,我们将介绍几个案例场景,找出原因,然后针对CIFS的约束委派在 Windows 10 中失败并出现ACCESS_DENIED错误的问题提供可能的解决方法。(ACCESS_DENIED)

通用 Internet 文件系统 (CIFS)是一种文件共享协议,它为请求(Common Internet File System (CIFS))网络服务器(network server)文件和服务 提供了一种开放的跨平台机制。CIFS 基于 Microsoft 的服务器消息块(Server Message Block)( SMB ) 协议的增强版本,用于Internet 和 Intranet 文件共享(Internet and intranet file sharing)

CIFS 的约束委派在 Windows 中失败

CIFS的约束委派在Windows中失败

如果提示用户输入凭据,您可能会遇到此问题,并且基于以下三种情况,访问最终会失败并出现拒绝访问错误。

方案 1(Scenario 1)

  • 使用为CIFS配置的直通身份验证和约束委派设置IIS 网站的(IIS website)主目录(home directory)指向远程共享。
  • 访问该共享的IIS 应用程序池以(IIS application)服务帐户(service account)的身份运行。
  • 域帐户(domain account)受信任,可用于文件服务器(file server)上的CIFS 服务(CIFS service)的委派。

方案 2(Scenario 2)

  • Web 应用程序(web app)正在尝试以用户身份访问文件服务器(file server)
  • 访问该共享的 IIS 应用程序池以服务帐户(IIS application)(service account)身份运行。域帐户(domain account)受信任,可用于文件服务器(file server)上的CIFS 服务(CIFS service)的委派。
  • 为CIFS(CIFS)配置的约束委派是在文件服务器的(file server)服务帐户(service account)上配置的。

方案 3(Scenario 3)

  • 从客户端访问的任何服务器端应用程序都以用户身份访问远程共享。
  • 服务器端应用程序在服务帐户(service account)的上下文中运行。
  • 服务帐户(Service account)受信任以进行委派,并为文件服务器的(file server)CIFS 委派(CIFS delegation)配置。

当涉及约束委派时,这已被确定为MrxSmb 2.0Kerberos之间的问题。(Kerberos)

为了解决此问题,Microsoft提供了两种解决方法。

解决方法 1

使用机器帐户(machine account)而不是服务帐户(service account)作为将为CIFS执行约束委派的应用程序的身份。当域功能级别为Windows Server 2003(Windows Server 2003)、 Windows Server 2008或 Windows Server 2008 R2时,配置约束委派。

要在您的 Web 服务器域的域控制器(domain controller)上执行此操作,请执行以下操作:

  • 单击Start > Administrative Tools > Active Directory 用户和计算机(Active Directory Users and Computers)
  • 展开 domain(Expand domain),然后展开Computers文件夹。
  • 在右窗格中,右键单击 Web 服务器的计算机名称(computer name),选择“属性(Properties)”,然后单击“ 委派(Delegation)” 选项卡。
  • 选中 信任此计算机以仅委派给指定的服务(Trust this computer for delegation to specified services only)复选框。
  • 确保 选中仅使用 Kerberos(Use Kerberos only)  ,然后单击 确定(OK)
  • 单击 添加按钮(Add button)
  • 在“ 添加(Add) 服务(Services) ”对话框中(dialog box),单击 “用户”或“计算机(Users or Computers)”,然后浏览或输入  将从IIS接收用户凭据的(IIS)文件服务器(file server)的名称。
  • 单击 确定(OK)
  • 在 可用(Available) 服务(Services) 列表中,选择 CIFS 服务(CIFS service)
  • 单击 确定(OK)

解决方法 2

不建议(not recommended)使用此解决方法,因为它需要 在计算机帐户上(computer account)使用(Use)任何身份验证协议委派。如果选择了 使用任何身份验证协议(Use any authentication protocol) 选项,则帐户正在使用带有协议转换的约束委派。

如果您必须将应用程序的身份用作服务帐户(service account)和/或域帐户(domain account),请执行以下操作:

第1步(Step 1)

  • 单击开始(Start )Administrative Tools > Active Directory 用户和计算机(Active Directory Users and Computers)
  • 展开 domain(Expand domain),然后展开Computers文件夹。
  • 在右窗格中,右键单击 Web 服务器的计算机名称(computer name),选择“属性(Properties)”,然后单击“ 委派(Delegation)” 选项卡。
  • 选中 信任此计算机以仅委派给指定的服务(Trust this computer for delegation to specified services)复选框。
  • 确保 选中使用任何身份验证协议(Use any authentication protocol)
  • 单击确定(OK)
  • 单击 添加按钮(Add button)
  • 在“ 添加(Add) 服务(Services) ”对话框中(dialog box),单击 “用户”或“计算机(Users or Computers)”,然后浏览或输入将从IIS接收用户凭据的(IIS)文件服务器(file server)的名称。
  • 单击 确定(OK)
  • 在 可用(Available) 服务(Services) 列表中,选择CIFS 服务(CIFS service)
  • 单击 确定(OK)

第2步(Step 2)

  • 左窗格(left pane)中,展开用户文件夹。
  • 在右窗格中,右键单击作为应用程序池(application pool)标识的服务帐户(service account),选择 属性(Properties),然后单击 委派(Delegation) 选项卡。
  • 选中 信任此计算机以仅委派给指定的服务(Trust this computer for delegation to specified services only)复选框。
  • 确保 选中仅使用 Kerberos(Use Kerberos only)
  • 单击确定(OK)
  • 单击 添加按钮(Add button)
  • 在“添加(Add) 服务(Services) ”对话框中(dialog box),单击 “用户”或“计算机(Users or Computers)”,然后浏览或输入将从IIS接收用户凭据的(IIS)文件服务器(file server)的名称。
  • 单击 确定(OK)
  • 在 可用(Available) 服务(Services) 列表中,选择CIFS 服务(CIFS service)
  • 单击 确定(OK)

希望这篇文章有所帮助。(Hope this post helps.)



About the author

我是一名软件工程师,拥有 Xbox Explorer、Microsoft Excel 和 Windows 8.1 Explorer 方面的经验。业余时间,我喜欢玩电子游戏和看电视。我拥有犹他大学的学位,目前在一家国际公司担任软件工程师。



Related posts