生成摘要质询响应

收到来自服务器的质询后,客户端通过调用 InitializeSecurityContext (Digest) 函数来创建 Digest 质询响应。 此函数使用有关请求的资源和质询数据的信息生成 MD5 哈希 指纹,并输出表示部分 安全上下文的安全令牌。 若要完成身份验证,客户端必须将令牌返回到发出质询的服务器。

下表描述了 InitializeSecurityContext (Digest) 函数的参数,以及构造摘要质询响应时要提供的值。

参数 说明
fContextReq
客户端请求的安全上下文属性。 有关详细信息,请参阅摘要质询响应上下文要求。
pszTargetName
HTTP:以 Null 结尾的字符串,用于指定目标 URL。
SASL:以 Null 结尾的字符串,指定 DNS/SPN 目标。
pInput
包含摘要 SSP 所需信息的缓冲区。 有关详细信息,请参阅 摘要质询响应的输入缓冲区
pfContextAttr
接收返回的安全上下文支持的属性。 有关详细信息,请参阅摘要质询响应上下文要求。
pOutput
接收要发送回服务器的安全令牌的SECBUFFER_TOKEN类型缓冲区的地址。

摘要质询响应上下文要求

上下文要求是确定:

  • Microsoft Digest 是用作 SASL 机制还是 HTTP 身份验证协议。
  • 客户端和服务器共享 的安全上下文 支持的保护质量。

默认情况下,Microsoft Digest 充当 SASL 机制。

上下文要求指定为传递给 InitializeSecurityContext 函数的 fContextReq 参数的标志。 标志通过控制质询响应中的 qop 指令来影响安全上下文的保护质量。

默认情况下,qop 指令设置为“auth”。 若要生成将 qop 设置为“auth-int”的质询响应,必须发生以下情况:

  1. 摘要质询必须将 qop 指令设置为“auth-int”。

  2. 客户端必须指定以下一个或多个标志:

    • ISC_REQ_INTEGRITY
    • ISC_REQ_REPLAY_DETECT
    • ISC_REQ_SEQUENCE_DETECT

仅适用于 SASL:通过指定 ISC_REQ_CONFIDENTIALITY 标志,生成 qop 指令设置为“auth-conf”的质询响应。 由于此标志对 HTTP 身份验证无效,因此不能与 ISC_REQ_HTTP 标志一起使用。

验证保护质量

客户端必须检查 InitializeSecurityContext 函数的 pfContextAttr 参数中返回的安全上下文属性标志。 仅当标志指示的保护质量足以满足其目的时,客户端才应将质询响应发送到服务器。 相关标志可以是以下任意组合:

  • ISC_RET_INTEGRITY
  • ISC_RET_REPLAY_DETECT
  • ISC_RET_SEQUENCE_DETECT
  • 仅) ISC_RET_CONFIDENTIALITY (SASL 上下文

有关 qop 指令的详细信息,请参阅 保护和密码的质量

有关质询响应指令的详细信息,请参阅 摘要质询响应的内容