生成摘要质询响应
从服务器收到质询后,客户端通过调用 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”的质询响应,必须发生以下情况:
Digest 质询必须已将 qop 指令设置为“auth-int”。
客户端必须指定以下一个或多个标志:
- 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 指令的详细信息,请参阅 保护质量和密码。
有关质询响应指令的详细信息,请参阅摘要质询响应的内容。