原文出处:http://technet.microsoft.com/zh-cn/library/cc771144(v=ws.10).aspx

以下方案有助于解释如何使用 RODC 进行身份验证过程。在此方案中:

  • 用户 Bob 想登录名为 BOB_WS 的工作站。
  • 其中安装 BOB_WS 工作站的子网由 RODC 提供服务。
  • 允许 Bob 的用户帐户将凭据缓存在 RODC 上,但这些凭据尚未缓存。
  • 允许 BOB_WS 计算机帐户将凭据缓存在 RODC 上,但凭据尚未缓存。

Bob 尝试登录工作站 BOB_WS。首先,必须从域控制器中检索 TGT。此方案中的 TGT 检索过程如下图所示。

  1. RODC 作为分支机构的 KDC 播发。这意味着当 BOB_WS 搜索域控制器以对 Bob 的登录请求进行身份验证时,它可以找到 RODC 并将其用作 KDC。BOB_WS 的 Kerberos 身份验证包准备 TGT 请求并将其发送给 RODC。
  2. RODC 收到来自 BOB_WS 的 TGT 请求。由于 RODC 不知道 Bob 帐户的密码,因此无法为 Bob 创建 TGT。RODC 将此 TGT 请求转发给可写的 Windows Server 2008 域控制器。
  3. 可写的 Windows Server 2008 域控制器对请求进行身份验证。
  4. 然后将结果返回给 RODC。如果 Bob 提供正确的凭据,则结果为 TGT。如果 Bob 的凭据验证失败,则结果为错误消息。在此方案中,如果登录时 Bob 输入了有效的用户名和密码,则验证成功。
  5. 可写域控制器将 TGT 返回给 RODC 的同时,还将 Bob 帐户的可分辨名称(也称为 DN)添加到 RODC 计算机帐户的 msDS-AuthenticatedToAccountList 属性中。这将创建一条 Bob 已通过 RODC 的身份验证的记录。
  6. 然后 RODC 将结果传递给 BOB_WS。
  7. RODC 将 TGT 发送回 BOB_WS 之后,还会请求可写域控制器将 Bob 的凭据复制到 Active Directory 数据库的副本中。
  8. 当可写域控制器收到将 Bob 的凭据复制到 RODC 的请求时,将检查密码复制策略,以确定是否允许 RODC 缓存 Bob 帐户的凭据。
  9. 如果检查指示可以缓存凭据,则可写域控制器允许将 Bob 的帐户凭据复制到 RODC。
  10. 在可写域控制器发送 RODC 请求的凭据的同时,可写域控制器会将 Bob 帐户的可分辨名称写入 RODC 计算机帐户的 msDS-RevealedList 属性。这将创建一条 Bob 帐户的凭据现在已缓存在 RODC 上的记录。
  11. RODC 将 Bob 的凭据存储在 Active Directory 数据库中其用户帐户的相应属性中。

此时:

  • 可写域控制器包含一条已允许将 Bob 的凭据复制到 RODC 的记录。
  • Bob 帐户的凭据缓存在 RODC 上。
  • Bob 具有可写域控制器生成的 TGT。

下一步,Bob 必须获得 BOB_WS 的服务票证才能对其进行操作,如下图所示。

  1. BOB_WS 将 Bob 的服务票证请求发送给 RODC。该请求包含由可写域控制器颁发的 TGT。
  2. RODC 不知道可写域控制器通常使用的 krbtgt 帐户的密码;因此,它必须将服务票证请求转发给可写域控制器。但是 RODC 已缓存了 Bob 的凭据;因此,它可以满足 Bob 的服务票证请求。因此,在可写域控制器成功响应转发的请求之后,RODC 向 BOB_WS 返回一条 Kerberos 错误消息而不是请求的服务票证。此错误消息指出 Bob 在服务票证请求中使用的 TGT 不再有效,因此必须颁发新的 TGT。
  3. 收到此错误消息之后,BOB_WS 丢弃可写域控制器颁发的 TGT,并从 RODC 请求新的 TGT。
  4. RODC 已缓存了 Bob 的凭据,因此它准备一个 TGT 并用其自己的 krbtgt 帐户的密码对该 TGT 进行签名。
  5. 然后 RODC 将此新的 TGT 发送回 BOB_WS。
  6. BOB_WS 再次将 Bob 的服务票证请求发送给 RODC。现在,服务票证请求包含由 RODC 颁发的 TGT。
  7. RODC 处理服务票证请求。由于它没有缓存 BOB_WS 计算机帐户凭据,因此它无法创建服务票证。它必须将服务票证请求转发给某个可写域控制器。
  8. 可写域控制器收到来自 RODC 的服务票证请求。可写域控制器:
    1. 验证 TGT。(可写的域控制器可以验证 TGT,因为它知道特定于 RODC 的 krbtgt 帐户的密码。)
    2. 确定密码复制策略是否允许 RODC 缓存 Bob 帐户的凭据。允许 RODC 仅为允许将凭据缓存在其上的帐户创建 TGT。
    3. 评估 Bob 帐户的成员身份并准备服务票证的权限验证证书 (PAC) 部分。它不使用由 RODC 准备的 TGT 的 PAC 部分。这样可防止在 RODC 受到威胁以及向 TGT 的 PAC 部分放置虚假信息时提升权限。
  9. 可写域控制器创建服务票证并将其发送回 RODC。
  10. 然后 RODC 将服务票证转发给 BOB_WS。
  11. Bob 便可以开始在 BOB_WS 上工作。
  12. RODC 将服务票证发送回 BOB_WS 之后,还请求可写域控制器将 BOB_WS 凭据复制到其 Active Directory 数据库的副本。
  13. 当上游域控制器收到将 BOB_WS 帐户凭据复制到 RODC 的请求时,将检查密码复制策略,看是否允许 RODC 缓存 BOB_WS 帐户的凭据。
  14. 如果可以缓存凭据,则可写域控制器允许将 BOB_WS 帐户凭据复制到 RODC。
  15. 在可写域控制器发送 RODC 请求的凭据的同时,可写域控制器将 BOB_WS 帐户的可分辨名称写入 RODC 计算机帐户的 msDS-RevealedList 属性。这将创建一条 BOB_WS 的凭据现在已缓存在 RODC 上的记录。
  16. RODC 将 BOB_WS 计算机的凭据存储在 Active Directory 数据库中其计算机帐户的相应属性中。

此时:

  • Bob 已登录 BOB_WS 工作站,并且他可以请求服务票证以访问服务器上的资源,方法与他为其自己的工作站请求服务票证的方法一样。
  • 如果 Bob 访问的任何计算机允许将凭据缓存在 RODC 上,则在计算机处理服务票证请求时 RODC 将缓存凭据。
  • RODC 缓存 BOB_WS 计算机帐户的凭据。
  • 可写域控制器创建一条其已将 BOB_WS 计算机帐户的凭据显示给 RODC 的记录。

在 Bob 下次尝试登录 BOB_WS 工作站时,RODC 无需联系可写域控制器即可处理登录请求,因为它已缓存了 Bob 帐户和 BOB_WS 帐户的凭据,如下图所示。

  1. RODC 作为分支机构的 KDC 播发。这意味着当 BOB_WS 搜索域控制器以对 Bob 的登录请求进行身份验证时,它可以找到 RODC 并将其用作 KDC。BOB_WS 的 Kerberos 身份验证包准备 TGT 请求并将其发送给 RODC。
  2. RODC 收到来自 BOB_WS 的 TGT 请求。由于 RODC 已经知道 Bob 帐户的密码,因此它可以为 Bob 创建 TGT。RODC 在创建 TGT 时使用其自己的 krbtgt 帐户。
  3. RODC 将 TGT 发送回 BOB_WS,并将 TGT 存储在与 Bob 的登录会话关联的票证缓存中。
  4. 为了能够在 BOB_WS 上工作,Bob 需要服务票证来获得访问权限。BOB_WS 上的身份验证包创建服务票证请求并将其发送给 RODC。BOB_WS 上的身份验证包准备 TGT 请求并将其发送给 RODC。
  5. RODC 收到来自 BOB_WS 的服务票证请求,并且由于它已经知道 BOB_WS 计算机帐户的密码,因此它可以为 Bob 创建服务票证以访问 BOB_WS。RODC 在创建 TGT 时使用其自己的 krbtgt 帐户。
  6. RODC 将服务票证发送回 BOB_WS,并将服务票证存储在与 Bob 的登录会话关联的票证缓存中。
  7. Bob 便可以开始在 BOB_WS 上工作。