RPC_HTTP_TRANSPORT_CREDENTIALS_W结构(rpcdce.h)

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

语法

typedef struct _RPC_HTTP_TRANSPORT_CREDENTIALS_W {
  SEC_WINNT_AUTH_IDENTITY_W *TransportCredentials;
  unsigned long             Flags;
  unsigned long             AuthenticationTarget;
  unsigned long             NumberOfAuthnSchemes;
  unsigned long             *AuthnSchemes;
  unsigned short            *ServerCertificateSubject;
} RPC_HTTP_TRANSPORT_CREDENTIALS_W, *PRPC_HTTP_TRANSPORT_CREDENTIALS_W;

成员

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
从 HTTP 的角度来看,对 RPC 代理进行身份验证,这是 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 中的 标志 成员必须设置为SEC_WINNT_AUTH_IDENTITY_UNICODE。 如果使用 RpcBindingSetAuthInfoEx 函数的 ANSI 版本,则必须提供 RPC_HTTP_TRANSPORT_CREDENTIALSSEC_WINNT_AUTH_IDENTITY 结构的 ANSI 版本,并且 TransportCredentials 中的 标志 成员必须设置为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