每个经过身份验证的客户端都必须向服务器提供身份验证凭据。 在 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 结构包含用户名、域和密码的字段。