生成摘要质询响应

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

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

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

摘要质询响应上下文要求

上下文要求是确定以下内容的标志:

  • Microsoft 摘要是否作为 SASL 机制或 HTTP 身份验证协议运行。
  • 客户端和服务器共享的安全上下文支持的保护质量。

默认情况下,Microsoft 摘要作为 SASL 机制运行。

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

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

  1. Digest 质询必须已将 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 指令的详细信息,请参阅 保护质量和密码

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