RPC_HTTP_TRANSPORT_CREDENTIALS_A 结构 (rpcdce.h)

RPC_HTTP_TRANSPORT_CREDENTIALS 结构定义使用 RPC/HTTP 时向 RPC 代理服务器进行身份验证的其他凭据。

语法

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_A {
  SEC_WINNT_AUTH_IDENTITY_A *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned char             *ServerCertificateSubject;
} RPC_HTTP_TRANSPORT_CREDENTIALS_A, *PRPC_HTTP_TRANSPORT_CREDENTIALS_A;

成员

TransportCredentials

指向 SEC_WINNT_AUTH_IDENTITY 结构的指针,该结构包含用户的用户名、域和密码。

Flags

可以与按位 OR 运算符组合的一组标志。

含义
RPC_C_HTTP_FLAG_USE_SSL
指示 RPC 使用 SSL 与 RPC 代理通信。
RPC_C_HTTP_FLAG_USE_FIRST_AUTH_SCHEME
设置后,RPC 会选择 AuthnSchemes 数组中的第一个方案,并尝试向 RPC 代理进行身份验证。 如果 RPC 代理不支持所选身份验证方案,则调用将失败。 如果未设置,RPC 客户端会查询 RPC 代理以获取支持的身份验证方案,并选择一种。

AuthenticationTarget

指定身份验证目标。

应设置为以下一个或两个值:

含义
RPC_C_HTTP_AUTHN_TARGET_SERVER
针对 RPC 代理(从 HTTP 角度而言是 HTTP 服务器)进行身份验证。 这是最常见的值。
RPC_C_HTTP_AUTHN_TARGET_PROXY
针对 HTTP 代理进行身份验证。 此值不常见。

NumberOfAuthnSchemes

AuthnScheme 数组中的元素数。

AuthnSchemes

ServerCertificateSubject

包含具有预期服务器主体名称的可选字符串。 主体名称的格式与为 RpcCertGeneratePrincipalName 生成的相同格式 (请参阅 主体名称 了解) 的详细信息。 仅当使用 SSL 时才使用此成员。 在这种情况下,会根据生成的主体名称检查服务器证书。 如果它们不匹配,则返回错误。 此成员使客户端能够对 RPC 代理进行身份验证。

注解

如果 TransportCredentials 成员为 NULL 且身份验证方案为 NTLM,则使用当前登录用户的凭据。 为了避免通过弱 LM 哈希在网络上公开用户凭据,仅当以下一个或两个条件为 true 时,才使用用户登录凭据:

  • 调用方请求使用 SSL 并使用 ServerCertificateSubject 成员。 此方案保证凭据在传输过程中和最终目标位置都受到保护,即使使用了弱哈希。
  • lncompatibilitylevel 键设置为 2 或更高。 这会导致 NTLM 安全提供程序仅发出或响应强 NT 哈希,而不是弱 LM 哈希。 此外,建议客户使用级别 3 或更高版本,这将尝试 NTLMv2。
如果使用 RpcBindingSetAuthInfoEx 函数的 Unicode 版本,还必须提供 RPC_HTTP_TRANSPORT_CREDENTIALSSEC_WINNT_AUTH_IDENTITY 结构的 Unicode 版本,并且 TransportCredentials 中的 Flags 成员必须设置为 SEC_WINNT_AUTH_IDENTITY_UNICODE。 如果使用 RpcBindingSetAuthInfoEx 函数的 ANSI 版本,则必须提供 RPC_HTTP_TRANSPORT_CREDENTIALSSEC_WINNT_AUTH_IDENTITY 结构的 ANSI 版本,并且 TransportCredentials 中的 Flags 成员必须设置为 SEC_WINNT_AUTH_IDENTITY_ANSI。

要求

要求
最低受支持的客户端 具有 SP1 的 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
标头 rpcdce.h (包括 Rpc.h)

另请参阅

主体名称

RPC_HTTP_TRANSPORT_CREDENTIALS_V2

RPC_HTTP_TRANSPORT_CREDENTIALS_V3

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V2

RPC_SECURITY_QOS_V3

使用 HTTP 代理上的 RPC 的远程过程调用

RpcBindingSetAuthInfoEx

RpcCertGeneratePrincipalName

SEC_WINNT_AUTH_IDENTITY