客户端上下文初始化

为了建立安全连接,客户端在向服务器发送身份验证请求之前获取出站 凭据 句柄。 服务器从身份验证请求为客户端创建安全上下文。 身份验证设置涉及两个客户端 SSPI 函数:

可以在将 SSPI 与 Windows 套接字客户端配合使用中的 GenClientContext 函数中查看此过程的代码。

如果客户端程序除了需要使用自己的登录凭据(例如其他用户名、域名和密码)以外,还需要使用凭据,它会在 AcquireCredentialsHandle 调用中使用指定附加凭据 的SEC_WINNT_AUTH_IDENTITY 结构提供凭据。 有关凭据函数的详细信息,请参阅 凭据管理

注意

当结构中的字符串为 ASCI 或 OEM 时,可以将 SEC_WINNT_AUTH_IDENTITY 结构的 Flags 成员设置为 SEC_WINNT_AUTH_IDENTITY_ANSI。 如果 ANSI 字符串首先使用 MultiByteToWideChar 函数转换为 Unicode,则可以与设置为 SEC_WINNT_AUTH_IDENTITY_UNICODE 的 SEC_WINNT_AUTH_IDENTITY 结构的 Flags 成员一起使用。

 

若要启动身份验证的第一阶段,客户端调用 InitializeSecurityContext (General) 以获取初始安全令牌,该令牌将在连接请求消息中发送到服务器。

客户端使用在输出缓冲区描述符中收到的安全令牌信息来生成要发送到服务器的消息。 消息的构造(在放置各种缓冲区等方面)是 应用程序协议 的一部分,双方必须理解。

客户端从 InitializeSecurityContext (常规) 检查返回状态,以查看身份验证是否会在单个调用中完成。 返回状态SEC_I_CONTINUE_NEEDED指示安全协议需要多个身份验证消息。 有关上下文函数的详细信息,请参阅 上下文管理