rpcBindingSetAuthInfo 函数 (rpcdce.h)

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

语法

RPC_STATUS RpcBindingSetAuthInfo(
  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

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

AuthnSvc

要使用的身份验证服务。 请参阅“注意”。

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

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

AuthIdentity

处理包含适用于所选身份验证和授权服务的客户端身份验证和授权凭据的结构。使用 RPC_C_AUTHN_WINNT 身份验证服务 AuthIdentity 时,应是指向 Rpcdce.h) 中定义的 SEC_WINNT_AUTH_IDENTITY 结构 (的指针。 Kerberos 和 Negotiate 身份验证服务还使用 SEC_WINNT_AUTH_IDENTITY 结构。

选择RPC_C_AUTHN_GSS_SCHANNEL身份验证服务时, AuthIdentity 参数应是指向 Schannel.h) 中定义的 SCHANNEL_CRED 结构 (的指针。 指定 null 值以使用当前地址空间的安全登录上下文。 传递值RPC_C_NO_CREDENTIALS以使用匿名登录上下文。

注意 选择RPC_C_AUTHN_GSS_SCHANNEL身份验证服务时, AuthIdentity 参数也可能是指向 SCH_CRED 结构的指针。 但是,在 Windows XP 和更高版本的 Windows 中,作为 RPC_C_AUTHN_GSS_SCHANNEL 身份验证服务的 AuthIdentity 参数传递的唯一可接受的结构是 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 函数。 这样做会产生未定义的结果。
 

要求

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

另请参阅

MSMQ 安全服务

RpcBindingInqAuthInfo

RpcBindingSetOption

RpcServerRegisterAuthInfo