客户端身份验证凭据
每个经过身份验证的客户端都必须向服务器提供身份验证凭据。 在 RPC 下,客户端将其身份验证凭据存储在客户端和服务器之间的绑定中。 为此,客户端调用 RpcBindingSetAuthInfo 或 RpcBindingSetAuthInfoEx。
有两种类型的凭据 - 隐式凭据和显式凭据:
- 当客户端提供用户名、密码和域时,存在显式凭据。
- 当客户端使用来自调用 RpcBindingSetAuthInfo 或 RpcBindingSetAuthInfoEx 函数的线程或进程令牌的凭据时,存在隐式凭据。
客户端应避免提供显式凭据,因为如果使用显式凭据,存储、操作和检索用户密码可能会给分布式系统带来安全漏洞。
若要使用隐式凭据,客户端调用 RpcBindingSetAuthInfo (Ex) 。 安全系统和 RPC 从线程或进程令牌获取凭据,以便在身份验证会话中使用。
如果客户端使用显式凭据,则这两个函数的第五个参数的类型 为 RPC_AUTH_IDENTITY_HANDLE。 这是一种灵活类型,它是指向数据结构的指针。 数据结构的内容可能因每个身份验证服务而异。 目前,RPC 支持的 SSP 要求应用程序 将RPC_AUTH_IDENTITY_HANDLE 设置为指向 SEC_WINNT_AUTH_IDENTITY 结构。 SEC_WINNT_AUTH_IDENTITY结构包含用户名、域和密码的字段。