客户端上下文初始化

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

可以在将 SSPI 与 Windows Sockets Client 配合使用的 GenClientContext 函数中查看此过程的代码。

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

注意

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

 

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

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

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