rpcBindingSetAuthInfoExW 函数 (rpcdce.h)

RpcBindingSetAuthInfoEx 函数设置绑定句柄的身份验证、授权和安全服务质量信息。

语法

RPC_STATUS RpcBindingSetAuthInfoExW(
  RPC_BINDING_HANDLE       Binding,
  RPC_WSTR                 ServerPrincName,
  unsigned long            AuthnLevel,
  unsigned long            AuthnSvc,
  RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  unsigned long            AuthzSvc,
  RPC_SECURITY_QOS         *SecurityQOS
);

参数

Binding

将身份验证和授权信息设置为的服务器绑定句柄。

ServerPrincName

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

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

AuthnLevel

要对使用 绑定进行的远程过程调用执行的身份验证级别。 有关 RPC 支持的身份验证级别的列表,请参阅 身份验证级别常量

AuthnSvc

要使用的身份验证服务。

指定RPC_C_AUTHN_NONE以关闭使用 Binding 进行的远程过程调用的身份验证。

如果指定了RPC_C_AUTHN_DEFAULT,则 RPC 运行时库使用 RPC_C_AUTHN_WINNT 身份验证服务对使用 Binding 进行的远程过程调用。

AuthIdentity

结构的句柄,该结构包含适用于所选身份验证和授权服务的客户端身份验证和授权凭据。

使用 RPC_C_AUTHN_WINNT 身份验证服务 AuthIdentity 应是指向 Rpcdce.h) 中定义的 SEC_WINNT_AUTH_IDENTITY 结构的指针 (。 Kerberos 和 Negotiate 身份验证服务也使用 SEC_WINNT_AUTH_IDENTITY 结构。

指定 null 值以使用当前地址空间的安全登录上下文。 传递值RPC_C_NO_CREDENTIALS以使用匿名登录上下文。 请注意,仅当RPC_C_AUTHN_GSS_SCHANNEL选作身份验证服务时,RPC_C_NO_CREDENTIALS才有效。

AuthzSvc

服务器为相关接口实现的授权服务。 与任何应用程序数据一样,授权数据的有效性和可信度取决于所选的身份验证服务和身份验证级别。 使用 RPC_C_AUTHN_WINNT 身份验证服务时,将忽略此参数。 请参阅“注意”。

SecurityQOS

指向 RPC_SECURITY_QOS 结构的指针,该结构定义安全服务质量。

注意 有关 RPC 支持的身份验证服务的列表,请参阅 Authentication-Service 常量
 

返回值

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

注解

客户端应用程序调用 RpcBindingSetAuthInfoEx 函数来设置服务器绑定句柄,以便进行经过身份验证的远程过程调用。 此函数提供在绑定句柄上设置安全服务质量信息的功能。 否则,它与 RpcBindingSetAuthInfo 相同。

除非客户端调用 RpcBindingSetAuthInfoEx,否则 绑定 上的所有远程过程调用均未经身份验证。 客户端不需要调用此函数。

RpcBindingSetAuthInfoEx 函数采用凭据快照。 因此,专用于 AuthIdentity 参数的内存可以在绑定句柄之前释放。 应用程序将 RpcBindingSetAuthInfoEx 与 RPC_C_QOS_IDENTITY_DYNAMIC 一起使用,并且还为 AuthIdentity 指定非 NULL 值时,情况例外。

注意 在同一句柄上进行 RPC 调用时,不得对绑定句柄调用 RpcBindingSetAuthInfo 函数。 这样做会产生未定义的结果。
 
由于不同版本的 Microsoft RPC 要求不同,Microsoft 建议应用程序保持指向 AuthIdentity 参数的指针,只要绑定句柄存在。 这样做可以提高应用程序的可移植性。

Windows Server 2003 SP1 和 Windows XP SP2: 对于 Windows XP SP2 和 Windows Server 2003 SP1,在绑定句柄的生命周期内不需要维护指向 AuthIdentity 参数的指针。 仅当后续调用 RpcBindingInqAuthInfoRpcBindingInqAuthInfoEx 时,才必须维护此指针。

注意ncalrpc 协议序列仅支持RPC_C_AUTHN_WINNT,但支持相互身份验证;提供 SPN 并通过 SecurityQOS 参数请求相互身份验证以实现此目的。
 

注意

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

要求

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

另请参阅

RPC_SECURITY_QOS

RpcBindingInqAuthInfoEx

RpcServerRegisterAuthInfo