使用 Microsoft Digest 进行初始身份验证

注意

从 Windows 11 22H2 开始,Microsoft 将弃用 Microsoft Digest,也称为 wDigest。 我们将继续在受支持的 Windows 版本上支持 Microsoft Digest。 未来版本的 Windows 将包含 Microsoft Digest 的有限功能,最终 Windows 将不再支持 Microsoft Digest。

当服务器收到来自客户端的质询响应时,将进行初始身份验证。 对质询响应进行身份验证通常至少涉及两个服务器:

  • 发起服务器接收来自客户端的请求并发出质询,然后从必须进行身份验证的客户端接收质询响应。
  • 身份验证服务器 - 从原始服务器接收授权信息,并执行身份验证。 此服务器通常是支持多个原始服务器的域控制器。

当发起服务器收到包含摘要质询响应的 Authorization 标头的请求时,身份验证将按如下所示进行:

  • 根据以质询的 nonce 编码的服务器检查原始服务器的标识。
  • 检查 nonce 中编码的时间戳。 如果 nonce 已过期,并且用户名/密码信息有效,则发起服务器会发出新的 Digest 质询,并将过时指令设置为“true”,从而结束身份验证。 这表示只有 nonce 是“过时的”,并且客户端可以使用它在上一个响应中使用的密码来响应新的质询。 如果客户端在发送过时质询的质询响应后收到新的质询,则客户端必须生成新的质询响应。
  • 如果强制实施重播检测,则针对服务器维护的 nonce 会话数据库检查 nc 指令 (nonce count) 。
  • 标识身份验证服务器并发送客户端的授权信息。
  • 身份验证服务器根据原始服务器的标识检查以 nonce 编码的服务器的标识。
  • 身份验证服务器(域控制器)检索用户的密码。
  • 使用授权信息、密码和原始服务器标识,身份验证服务器计算客户端应在质询响应的响应指令中提供的值。 身份验证服务器将计算值与客户端的响应进行比较,以确定身份验证是成功还是失败。

如果身份验证成功,用户 的安全上下文 和摘要 会话密钥 将返回到发起服务器。 如果身份验证失败,则发起服务器必须生成错误响应。 身份验证成功后,发起服务器将请求的资源返回给客户端。

身份验证服务器返回的摘要会话密钥由原始服务器缓存,用于对将来的请求进行身份验证。 有关详细信息,请参阅 使用 Microsoft Digest 对后续请求进行身份验证