RpcBindingSetAuthInfoW 函数 (rpcdce.h)
RpcBindingSetAuthInfo 函数设置绑定句柄的身份验证和授权信息。
语法
RPC_STATUS RpcBindingSetAuthInfoW(
RPC_BINDING_HANDLE Binding,
RPC_WSTR ServerPrincName,
unsigned long AuthnLevel,
unsigned long AuthnSvc,
RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
unsigned long AuthzSvc
);
参数
Binding
要向其应用身份验证和授权信息的服务器绑定句柄。
ServerPrincName
指向由 绑定引用的服务器的预期主体名称的指针。 名称和语法的内容由正在使用的身份验证服务定义。
AuthnLevel
要对使用 绑定进行的远程过程调用执行的身份验证级别。 有关 RPC 支持的身份验证级别的列表,请参阅 Authentication-Level 常量的列表。
AuthnSvc
要使用的身份验证服务。 请参阅注释。
指定RPC_C_AUTHN_NONE以关闭使用 绑定进行的远程过程调用的身份验证。
如果指定了RPC_C_AUTHN_DEFAULT,RPC 运行时库将使用RPC_C_AUTHN_WINNT身份验证服务进行使用 绑定进行的远程过程调用。
AuthIdentity
处理包含适用于所选身份验证和授权服务的客户端身份验证和授权凭据的结构。使用RPC_C_AUTHN_WINNT身份验证服务时,AuthIdentity 应是指向 SEC_WINNT_AUTH_IDENTITY 结构的指针(在 Rpcdce.h 中定义)。 Kerberos 和 Negotiate 身份验证服务也使用 SEC_WINNT_AUTH_IDENTITY 结构。
选择RPC_C_AUTHN_GSS_SCHANNEL身份验证服务时,AuthIdentity 参数应是指向 SCHANNEL_CRED 结构的指针(在 Schannel.h 中定义)。 指定 null 值以使用当前地址空间的安全登录上下文。 传递值RPC_C_NO_CREDENTIALS以使用匿名登录上下文。
AuthzSvc
由服务器为感兴趣的接口实现的授权服务。 请参阅注释。
授权数据的有效性和可信度(如任何应用程序数据)取决于所选的身份验证服务和身份验证级别。 使用RPC_C_AUTHN_WINNT身份验证服务时,将忽略此参数。
返回值
价值 | 意义 |
---|---|
|
调用成功。 |
|
绑定句柄无效。 |
|
这是操作的错误绑定类型。 |
|
未知的身份验证服务。 |
言论
客户端应用程序调用 RpcBindingSetAuthInfo 函数来设置服务器绑定句柄,以便进行经过身份验证的远程过程调用。 调用此函数不需要客户端。
除非客户端 RpcBindingSetAuthInfo调用,否则不会对 绑定 绑定句柄执行远程过程调用。 服务器可以从远程过程调用中调用 RpcBindingInqAuthClient,以确定该调用是否已通过身份验证。
RpcBindingSetAuthInfo 函数拍摄凭据快照。 因此,可以在绑定句柄之前释放专用于 AuthIdentity 参数的内存。
由于不同版本的 Microsoft RPC 的要求不同,Microsoft建议应用程序保持指向 AuthIdentity 参数的指针,前提是绑定句柄存在。 这样做会增加应用程序的可移植性。
具有 SP1 的 Windows Server 2003 和 SP2 的 Windows XP:对于 Windows XP SP2 和 Windows Server 2003 SP1,则无需在绑定句柄的生命周期内维护指向 AuthIdentity 参数的指针。 仅当后续调用 RpcBindingInqAuthInfo 或 RpcBindingInqAuthInfoEx 时,才能保留此指针。
注意
rpcdce.h 标头将 RpcBindingSetAuthInfo 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | rpcdce.h (包括 Rpc.h) |
库 | Rpcrt4.lib |
DLL | Rpcrt4.dll |