使用身份验证建立安全连接

在客户端/服务器 应用程序协议中,服务器绑定到通信端口,如套接字或 RPC 接口。 然后,服务器等待客户端连接并请求服务。 在相互身份验证的情况下,连接设置的安全性角色是双重的:

  • 由服务器进行的客户端身份验证。
  • 客户端的服务器身份验证。

传输应用程序的客户端和服务器组件使用 安全包 来建立用于传输消息的安全连接。 建立安全连接的第一步是创建 安全上下文;即包含与连接相关的安全数据(例如 会话密钥和会话 持续时间)的不透明数据结构。

安全上下文实质上是从与客户端关联的安全包到与服务器关联的安全包的消息。 因此,创建安全上下文通常需要客户端和服务器调用其各自的安全包。 有关上下文函数的详细信息,请参阅 上下文管理

用于建立经过身份验证的安全连接的协议涉及在客户端和服务器之间交换一个或多个“安全令牌”。 这些令牌由双方作为不透明消息以及任何其他 特定于应用程序协议的信息一起发送。 作为不透明的消息,令牌由客户端从安全包函数接收,该函数无法解释或更改它,并作为消息转发到服务器。 令牌对服务器也是不透明的,服务器既不能解释也不能更改令牌。 服务器将不透明令牌转发到其安全包以供解释。 然后,包会通知服务器客户端身份验证或身份验证失败。

客户端在消息中接收服务器的令牌,从收到的消息中检索令牌,并在调用其安全包时使用该令牌。 然后,客户端再次调用安全包,指示是否已建立安全连接,或者在安全连接准备就绪之前是否需要进一步的交换。 从理论上讲,所需的安全令牌交换数量没有限制。 实际上,只需要有限数量的交换。 NTLM 身份验证基于质询/响应方案,并使用三条腿对服务器客户端进行身份验证。 Kerberos 版本 5.0 协议可能需要其他消息交换。

客户端上下文初始化

服务器上下文初始化