在远程域控制器上更改密码后,用户无法登录到域

本文提供了在远程域控制器上更改密码后无法登录到域的问题的解决方案。

适用于: Windows 2000
原始 KB 数: 318364

现象

在保存主域控制器(PDC)灵活单主操作(FSMO)角色的远程域控制器上更改用户帐户密码后,用户可能无法通过输入新密码登录到本地域控制器。 但是,用户仍可以使用其以前的密码登录到域。

原因

如果满足以下条件,则可能会发生此行为:

  • 远程域控制器尚未使用本地域控制器进行复制。

  • Kerberos 配置为使用用户数据报协议(UDP)协议(默认配置)。

  • 用户的安全令牌太大,无法容纳 UDP Kerberos 消息。

    注意

    如果用户是多个组的成员,则用户的安全令牌可能很大。

此问题是由本地域控制器上 Kerberos 身份验证的反重播功能引起的。 以下步骤演示了此行为:

  1. 用户帐户密码在远程域控制器上已更改,但该更改尚未复制到本地域控制器。
  2. 用户尝试使用新密码登录到域。 Kerberos 身份验证服务 Exchange 消息(KRB_AS_REQ)使用 UDP 发送到本地域控制器。
  3. 本地域控制器无法进行身份验证,因为它还没有新的密码信息。
  4. 本地域控制器将请求转发到远程 PDC(KDCSVC!FailedLogon)。
  5. 在函数中 FailedLogon ,将请求的条目输入到重播检测表中,并将KRB_AS_REQ消息发送到远程 PDC。
  6. 远程 PDC 已成功对请求进行身份验证,然后返回对本地域控制器的正回复。
  7. 本地域控制器检测到对 UDP 数据包的回复太大,这就是为什么向客户端计算机发送请求以使用传输控制协议(TCP)重新发送请求的原因。
  8. 客户端计算机使用 TCP 重新提交身份验证请求。
  9. 本地域控制器无法进行身份验证,因为它还没有新的密码信息(如步骤 3 中所示)。
  10. 本地域控制器将请求转发到远程 PDC 域控制器(KDCSVC!FailedLogon如步骤 4 中所示)。
  11. 函数中的 FailedLogon 重播检测检查将返回KRB_AP_ERR_REPEAT消息,因为重播检测表中已存在此请求的条目。 这是在步骤 5 中创建的条目。

身份验证尝试失败。

解决方法

若要解决此问题,请获取 Windows 2000 的最新 Service Pack。

此修补程序的英文版本包含下表中列出的文件属性(或更高版本)。 这些文件的日期和时间以协调世界时(UTC)列出。 查看文件信息时,会将其转换为本地时间。 若要查找 UTC 和本地时间之间的差异,请使用 控制面板 中的“日期和时间”工具中的“时区”选项卡。

Date Time Version Size File name
-----------------------------------------------------------
22-Mar-2002 23:55 5.0.2195.4959 123,664 Adsldp.dll
30-Jan-2002 00:52 5.0.2195.4851 130,832 Adsldpc.dll
30-Jan-2002 00:52 5.0.2195.4016 62,736 Adsmsext.dll
22-Mar-2002 23:55 5.0.2195.5201 356,624 Advapi32.dll
22-Mar-2002 23:55 5.0.2195.4985 135,952 Dnsapi.dll
22-Mar-2002 23:55 5.0.2195.4985 95,504 Dnsrslvr.dll
22-Mar-2002 23:56 5.0.2195.5013 521,488 Instlsa5.dll
22-Mar-2002 23:55 5.0.2195.5246 145,680 Kdcsvc.dll
22-Mar-2002 23:50 5.0.2195.5246 199,952 Kerberos.dll
07-Feb-2002 19:35 5.0.2195.4914 71,024 Ksecdd.sys
02-Mar-2002 21:32 5.0.2195.5013 503,568 Lsasrv.dll
02-Mar-2002 21:32 5.0.2195.5013 33,552 Lsass.exe
08-Dec-2001 00:05 5.0.2195.4745 107,280 Msv1_0.dll
22-Mar-2002 23:55 5.0.2195.4917 306,960 Netapi32.dll
22-Mar-2002 23:55 5.0.2195.4979 360,208 Netlogon.dll
22-Mar-2002 23:55 5.0.2195.5221 917,264 Ntdsa.dll
22-Mar-2002 23:55 5.0.2195.5201 386,832 Samsrv.dll
30-Jan-2002 00:52 5.0.2195.4874 128,784 Scecli.dll
22-Mar-2002 23:55 5.0.2195.4968 299,792 Scesrv.dll
30-Jan-2002 00:52 5.0.2195.4600 48,400 W32time.dll
06-Nov-2001 19:43 5.0.2195.4600 56,592 W32tm.exe
22-Mar-2002 23:55 5.0.2195.5011 125,712 Wldap32.dll

解决方法

若要解决此问题,请在本地域控制器上更改用户帐户密码,或强制 Kerberos 使用 TCP(传输控制协议)而不是 UDP(用户数据报协议)。

有关详细信息,请参阅 如何强制 Kerberos 在 Windows 中使用 TCP 而不是 UDP。

Status

Microsoft已确认,本文开头列出的Microsoft产品存在问题。 此问题首先在 Windows 2000 Service Pack 3 中更正。

详细信息

Kerberos 反重播功能可防止身份验证服务器接收同一数据包两次。 重播攻击是一种攻击,其中有效的数据传输是恶意或欺诈性重复的,由发起方或攻击者截获数据并重新传输数据。 攻击者可能会尝试“重播”有效的用户的用户名和密码,以尝试使用该用户的凭据进行身份验证。