摘要访问协议

RFC 2617 指定的摘要访问协议由 Microsoft Digest 安全支持提供程序 (SSP) 实现。 该实现由一组 Microsoft 安全支持提供程序接口 (SSPI) 客户端/服务器应用程序调用的安全上下文函数组成:

  • 建立消息交换 的安全上下文
  • 获取摘要 SSP 所需的数据对象,例如 凭据 和上下文句柄。
  • 访问消息 完整性 和机密性机制。

摘要访问身份验证在配对的请求/响应事务中进行,请求源自客户端,响应源自服务器。 成功的摘要访问身份验证需要两个请求/响应对。

当摘要 SSP 用于 HTTP 身份验证时,第一个和第二个请求/响应对之间没有保持连接。 换句话说,服务器在发送第一个响应后不会等待第二个请求。

下图显示了客户端和服务器在 HTTP 路径上使用摘要 SSP 完成身份验证的步骤。 SASL 机制使用相互身份验证,因此身份验证数据在最终 ASC 服务器调用客户端时发送回,以验证客户端是否与正确的服务器通信。

摘要访问协议

该过程从客户端通过发送 HTTP 请求 1 从服务器请求访问保护资源开始。

服务器接收 HTTP 请求 1,并确定资源需要请求中未包括的身份验证信息。 服务器为客户端生成质询,如下所示:

  1. 服务器通过调用 AcquireCredentialsHandle 函数获取其凭据
  2. 服务器通过调用 AcceptSecurityContext (General) 函数生成摘要质询。
  3. 服务器发送WWW-Authenticate标头作为对客户端请求的响应, (显示为 HTTP 响应 1) 。 标头包含摘要质询和一个不透明的指令,该指令包含对为客户端建立的部分 安全上下文 的引用。 标头发送时带有 401 状态代码,指示客户端请求生成了未经授权的访问错误。 有关摘要质询的详细信息,请参阅 摘要质询的内容生成摘要质询
  4. 客户端接收 HTTP 响应 1,提取服务器发送的摘要质询,并生成摘要质询响应,如下所示:
    1. 可以通过调用 AcquireCredentialsHandle 函数或通过以交互方式提示用户输入凭据来获取用户的凭据。
    2. 质询和凭据信息将传递给 InitializeSecurityContext (General) 函数,该函数生成摘要质询响应。
  5. 客户端向服务器发送包含质询响应的授权标头, (显示为 HTTP 请求 2) 。 有关摘要质询响应的详细信息,请参阅 摘要质询响应的内容生成摘要质询响应
  6. 服务器接收 HTTP 请求 2,提取客户端发送的质询响应,并通过调用 AcceptSecurityContext (General) 函数对信息进行身份验证。 有关身份验证过程的详细信息,请参阅 使用 Microsoft Digest 进行初始身份验证
  7. 服务器将 HTTP 响应 2 发送回客户端,作为摘要访问协议所需的第二个响应和最终响应。 如果身份验证成功,则此响应包含请求的资源。

摘要质询响应的内容