故障排除 Kerberos 约束委派问题

重要

在使用本文中的步骤之前,请先按照 Kerberos 故障排除清单中的步骤进行操作。 Kerberos 问题的最常见原因是基础结构问题和服务主体名称(SPN)问题。 清单可帮助你识别此类问题。

如果目标服务具有单独的前端和后端组件,Kerberos 可以将客户端凭据(包括访问权限)委托给服务帐户。 简单来说,首先客户端访问前端服务,然后前端服务代表客户端访问后端服务。 在受约束的委派情况下,前端服务维护一个可以代表客户端访问的服务列表。

配置详细信息因前端服务使用的帐户类型而异。 本文为不同类型的服务帐户提供了单独的过程:

使用内置服务帐户时,进行排查 Kerberos 受限委派的问题

如果前端服务在内置帐户(例如本地计算机的计算机帐户)的安全上下文下运行,请按照以下步骤作。 如果前端服务在与计算机帐户(例如本地系统或网络服务)相关的安全上下文之一下运行,请遵循以下步骤。

步骤 1:检查拓扑类型

若要使用约束委派,前端和后端服务必须属于同一域。 如果这些服务位于不同的域或不同的受信任的林域中,则必须改为使用基于资源的约束委派(RBCD)。 有关详细信息,请参阅 Kerberos 身份验证故障排除指南:支持的拓扑类型

步骤 2. 检查计算机帐户的委派设置

使用 Active Directory 用户和计算机(在“服务器管理器 工具 ”菜单上提供)执行这些步骤。

  1. 在 Active Directory 用户和计算机中,选择 “计算机”。 右键单击前端计算机的帐户,然后选择 “属性>委派”。
  2. 确保选择 仅信任此用户以委派到指定的服务
  3. 确保所选的身份验证选项适用于访问 Web 服务的用户。
  4. 确保服务列表包括后端服务(或后端服务器的 HOST 等常见服务类)。 如有必要,请选择“ 添加 ”以将服务添加到列表中。
  5. 选择“确定”

步骤 3. 在 IIS 中,检查应用程序池配置

使用 Internet Information Services (IIS) 工具(在“服务器管理器 工具 ”菜单上可用)查看应用程序池设置。

  1. 在 IIS 控制台中,展开 IIS 服务器并选择 应用程序池。 在右窗格中,右键单击 DefaultAppPool,然后选择“高级设置”。
  2. 选择 进程模型>标识。 确保已选择 内置帐户 ,并且已选择适当的内置帐户(如 NetworkService)。 选择 “确定 ”以返回到属性列表。
  3. 确保 “加载用户配置文件 ”设置为 True。 选择 “确定 ”关闭属性列表。
  4. 如果更改了任何设置,请重启 IIS 服务。
  5. 请重试进行身份验证。

排查使用自定义服务帐户时 Kerberos 约束委派的问题

如果前端服务在自定义帐户的安全上下文下运行,请按照以下步骤作。

步骤 1:检查拓扑类型

若要使用约束委派,前端和后端服务必须属于同一域。 如果这些服务位于不同的域或不同的受信任林中,则必须改用基于资源的约束委派(RBCD)。 有关详细信息,请参阅 Kerberos 身份验证故障排除指南:支持的拓扑类型

步骤 2. 检查服务帐户权限

确保服务帐户是 Web 服务器上的本地管理员或IIS_Users组的一部分。

步骤 3. 检查服务帐户的委派设置

使用 Active Directory 用户和计算机 (可通过“服务器管理器 工具”菜单使用)执行这些步骤。

  1. Active Directory 用户和计算机中,右键单击服务帐户(通常位于 “用户 ”容器中),然后选择“ 属性>委派”。
  2. 确保选择 仅信任此用户以委派到指定的服务
  3. 确保所选的身份验证选项适用于访问 Web 服务的用户。
  4. 确保服务列表包括后端服务(或后端服务器的 HOST 等常见服务类)。 如有必要,请选择“ 添加 ”以将服务添加到列表中。
  5. 选择 “帐户”,然后查看 “帐户”选项 设置。 确保未选择帐户敏感且无法委派选项。
  6. 选择“确定”

步骤 4. 检查前端服务器的计算机帐户的委派配置

除了自定义服务帐户,还必须为前端服务器的计算机账户配置委派。

  1. Active Directory 用户和计算机中,选择 “计算机”,右键单击前端计算机的帐户,然后选择“ 属性>委派”。
  2. 确保选择仅信任此用户用于委派到指定服务,并同时选择从属选项使用任何身份验证协议
  3. 确保服务列表包括后端服务(或后端服务器的 HOST 等常见服务类)。 如有必要,请选择“ 添加 ”以将服务添加到列表中。
  4. 选择“确定”

步骤 5. 在 IIS 中,检查应用程序池配置

使用 Internet Information Services (IIS) 工具(在“服务器管理器 工具 ”菜单上可用)查看应用程序池设置。

  1. 在 IIS 控制台中,展开 IIS 服务器,然后选择 “应用程序池”。 在右窗格中,右键单击 DefaultAppPool,然后选择“高级设置”。
  2. 选择 “进程模型>标识”。 确保已选择 “自定义帐户 ”,并选择服务帐户。 选择 “确定 ”以返回到属性列表。
  3. 确保 “加载用户配置文件 ”设置为 True。 选择 “确定 ”关闭属性列表。
  4. 重启 IIS 服务。
  5. 请重试进行身份验证。