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 运算符组合的一组标志。
AuthenticationTarget
指定身份验证目标。
应设置为以下一个或两个值:
值 | 含义 |
---|---|
|
针对 RPC 代理(从 HTTP 角度而言是 HTTP 服务器)进行身份验证。 这是最常见的值。 |
|
针对 HTTP 代理进行身份验证。 此值不常见。 |
NumberOfAuthnSchemes
AuthnScheme 数组中的元素数。
AuthnSchemes
ServerCertificateSubject
包含具有预期服务器主体名称的可选字符串。 主体名称的格式与为 RpcCertGeneratePrincipalName 生成的相同格式 (请参阅 主体名称 了解) 的详细信息。 仅当使用 SSL 时才使用此成员。 在这种情况下,会根据生成的主体名称检查服务器证书。 如果它们不匹配,则返回错误。 此成员使客户端能够对 RPC 代理进行身份验证。
注解
如果 TransportCredentials 成员为 NULL 且身份验证方案为 NTLM,则使用当前登录用户的凭据。 为了避免通过弱 LM 哈希在网络上公开用户凭据,仅当以下一个或两个条件为 true 时,才使用用户登录凭据:
- 调用方请求使用 SSL 并使用 ServerCertificateSubject 成员。 此方案保证凭据在传输过程中和最终目标位置都受到保护,即使使用了弱哈希。
- lncompatibilitylevel 键设置为 2 或更高。 这会导致 NTLM 安全提供程序仅发出或响应强 NT 哈希,而不是弱 LM 哈希。 此外,建议客户使用级别 3 或更高版本,这将尝试 NTLMv2。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 具有 SP1 的 Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | rpcdce.h (包括 Rpc.h) |
另请参阅
RPC_HTTP_TRANSPORT_CREDENTIALS_V2