摘要访问协议
RFC 2617 指定的摘要访问协议由 Microsoft Digest 安全支持提供程序 (SSP) 实现。 该实现由一组 Microsoft 安全支持提供程序接口 (SSPI) 客户端/服务器应用程序调用的安全上下文函数组成:
摘要访问身份验证在配对的请求/响应事务中进行,请求源自客户端,响应源自服务器。 成功的摘要访问身份验证需要两个请求/响应对。
当摘要 SSP 用于 HTTP 身份验证时,第一个和第二个请求/响应对之间没有保持连接。 换句话说,服务器在发送第一个响应后不会等待第二个请求。
下图显示了客户端和服务器在 HTTP 路径上使用摘要 SSP 完成身份验证的步骤。 SASL 机制使用相互身份验证,因此身份验证数据在最终 ASC 服务器调用客户端时发送回,以验证客户端是否与正确的服务器通信。
该过程从客户端通过发送 HTTP 请求 1 从服务器请求访问保护资源开始。
服务器接收 HTTP 请求 1,并确定资源需要请求中未包括的身份验证信息。 服务器为客户端生成质询,如下所示:
- 服务器通过调用 AcquireCredentialsHandle 函数获取其凭据。
- 服务器通过调用 AcceptSecurityContext (General) 函数生成摘要质询。
- 服务器发送WWW-Authenticate标头作为对客户端请求的响应, (显示为 HTTP 响应 1) 。 标头包含摘要质询和一个不透明的指令,该指令包含对为客户端建立的部分 安全上下文 的引用。 标头发送时带有 401 状态代码,指示客户端请求生成了未经授权的访问错误。 有关摘要质询的详细信息,请参阅 摘要质询的内容 和 生成摘要质询。
- 客户端接收 HTTP 响应 1,提取服务器发送的摘要质询,并生成摘要质询响应,如下所示:
- 可以通过调用 AcquireCredentialsHandle 函数或通过以交互方式提示用户输入凭据来获取用户的凭据。
- 质询和凭据信息将传递给 InitializeSecurityContext (General) 函数,该函数生成摘要质询响应。
- 客户端向服务器发送包含质询响应的授权标头, (显示为 HTTP 请求 2) 。 有关摘要质询响应的详细信息,请参阅 摘要质询响应的内容 和 生成摘要质询响应。
- 服务器接收 HTTP 请求 2,提取客户端发送的质询响应,并通过调用 AcceptSecurityContext (General) 函数对信息进行身份验证。 有关身份验证过程的详细信息,请参阅 使用 Microsoft Digest 进行初始身份验证。
- 服务器将 HTTP 响应 2 发送回客户端,作为摘要访问协议所需的第二个响应和最终响应。 如果身份验证成功,则此响应包含请求的资源。
相关主题