RpcBindingSetAuthInfoA 函数 (rpcdce.h)

RpcBindingSetAuthInfo 函数设置绑定句柄的身份验证和授权信息。

语法

RPC_STATUS RpcBindingSetAuthInfoA(
  RPC_BINDING_HANDLE       Binding,
  RPC_CSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc
);

参数

Binding

要向其应用身份验证和授权信息的服务器绑定句柄。

ServerPrincName

指向由 绑定引用的服务器的预期主体名称的指针。 名称和语法的内容由正在使用的身份验证服务定义。

注意 有关 SSP 允许的目标名称集,请参阅 InitializeSecurityContext 文档中的注释。
 

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以使用匿名登录上下文。

注意 选择RPC_C_AUTHN_GSS_SCHANNEL身份验证服务时,AuthIdentity 参数也可能是指向 SCH_CRED 结构的指针。 但是,在 Windows XP 和更高版本的 Windows 中,作为 AuthIdentity 参数传递RPC_C_AUTHN_GSS_SCHANNEL身份验证服务的唯一可接受的结构是 SCHANNEL_CRED 结构。
 

AuthzSvc

由服务器为感兴趣的接口实现的授权服务。 请参阅注释。

授权数据的有效性和可信度(如任何应用程序数据)取决于所选的身份验证服务和身份验证级别。 使用RPC_C_AUTHN_WINNT身份验证服务时,将忽略此参数。

注意 有关详细信息,请参阅 Authentication-Service 常量
 

返回值

价值 意义
RPC_S_OK
调用成功。
RPC_S_INVALID_BINDING
绑定句柄无效。
RPC_S_WRONG_KIND_OF_BINDING
这是操作的错误绑定类型。
RPC_S_UNKNOWN_AUTHN_SERVICE
未知的身份验证服务。
 
注释 有关有效错误代码的列表,请参阅 RPC 返回值
 

言论

客户端应用程序调用 RpcBindingSetAuthInfo 函数来设置服务器绑定句柄,以便进行经过身份验证的远程过程调用。 调用此函数不需要客户端。

除非客户端 RpcBindingSetAuthInfo调用,否则不会对 绑定 绑定句柄执行远程过程调用。 服务器可以从远程过程调用中调用 RpcBindingInqAuthClient,以确定该调用是否已通过身份验证。

RpcBindingSetAuthInfo 函数拍摄凭据快照。 因此,可以在绑定句柄之前释放专用于 AuthIdentity 参数的内存。

由于不同版本的 Microsoft RPC 的要求不同,Microsoft建议应用程序保持指向 AuthIdentity 参数的指针,前提是绑定句柄存在。 这样做会增加应用程序的可移植性。

具有 SP1 的 Windows Server 2003 和 SP2 的 Windows XP:对于 Windows XP SP2 和 Windows Server 2003 SP1,则无需在绑定句柄的生命周期内维护指向 AuthIdentity 参数的指针。 仅当后续调用 RpcBindingInqAuthInfoRpcBindingInqAuthInfoEx 时,才能保留此指针。

注释 当同一句柄上的 RPC 调用正在进行时,不得对绑定句柄调用 RpcBindingSetAuthInfo 函数。 这样做会产生未定义的结果。
 

注意

rpcdce.h 标头将 RpcBindingSetAuthInfo 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [桌面应用 |UWP 应用]
支持的最低服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 窗户
标头 rpcdce.h (包括 Rpc.h)
Rpcrt4.lib
DLL Rpcrt4.dll

另请参阅

MSMQ 安全服务

RpcBindingInqAuthInfo

RpcBindingSetOption

RpcServerRegisterAuthInfo