使用 Microsoft Digest 的 HTTP 身份验证需要三个输入缓冲区才能生成质询响应。 下表汇总了这些缓冲区。
缓冲区编号 | 包含 | 缓冲区类型 |
---|---|---|
0 | 从服务器收到的质询 | SECBUFFER_TOKEN |
1 | HTTP 方法 | SECBUFFER_PARAMS |
2 | H(实体) | SECBUFFER_PARAMS |
3 | 目标服务器的 服务主体名称(SPN)。 | SECBUFFER_TARGET_HOST | SECBUFFER_READONLY |
4 | 通道绑定令牌值 | SECBUFFER_CHANNEL_BINDINGS | SECBUFFER_READONLY |
缓冲区零包含从服务器收到的摘要质询,以响应对受访问保护的资源的初始请求。
缓冲区 1 包含方法的字符串表示形式,例如“GET”或“POST”。 此方法用于 A2 的计算,如 RFC 2617中所述。
缓冲区 2 是消息实体正文的 MD5 哈希,如 RFC 2617 中所述。
当摘要与通道绑定一起使用时,缓冲区 3 包含 UTF-8 格式的目标服务器的 SPN。
当 Digest 与通道绑定一起使用时,缓冲区 4 包含通道绑定令牌值。
SASL 的输入缓冲区
仅提供缓冲区零。 为了与其他 SSP 兼容,可以调用 InitializeSecurityContext (Digest),而无需有效的服务器质询。 在这种情况下,pInput 参数应设置为 null 。