RPC_SECURITY_QOS_V2_A 结构 (rpcdce.h)
RPC_SECURITY_QOS_V2 结构定义绑定句柄上的版本 2 安全服务质量设置。 有关 Windows 版本可用性,请参阅备注。
语法
typedef struct _RPC_SECURITY_QOS_V2_A {
unsigned long Version;
unsigned long Capabilities;
unsigned long IdentityTracking;
unsigned long ImpersonationType;
unsigned long AdditionalSecurityInfoType;
union {
RPC_HTTP_TRANSPORT_CREDENTIALS_A *HttpCredentials;
} u;
} RPC_SECURITY_QOS_V2_A, *PRPC_SECURITY_QOS_V2_A;
成员
Version
正在使用的 RPC_SECURITY_QOS 结构的版本。 本主题介绍 RPC_SECURITY_QOS 结构的版本 2。 有关其他版本,请参阅 RPC_SECURITY_QOS、 RPC_SECURITY_QOS_V3、 RPC_SECURITY_QOS_V4和 RPC_SECURITY_QOS_V5 。
Capabilities
正在向应用程序提供的安全服务。 功能是可以使用按位 OR 运算符组合的一组标志。
值 | 含义 |
---|---|
|
在不需要特定于提供程序的功能时使用。 |
|
指定此标志会导致 RPC 运行时从安全提供程序请求相互身份验证。 某些安全提供程序不支持相互身份验证。 如果安全提供程序不支持相互身份验证,或者无法建立服务器的标识,则对此类服务器的远程过程调用将失败,并RPC_S_SEC_PKG_ERROR错误。
注意 RPC 依赖于 SSP 来指示已成功协商的安全选项;RPC 反过来会使 SSP 报告无法协商选项的任何调用失败。 但是,已知某些安全提供程序会报告选项的成功协商,即使选项未成功协商也是如此。 例如,NTLM 会报告出于向后兼容性原因成功协商相互身份验证,即使它不支持相互身份验证。 检查用于确定其与安全选项相关的行为的特定 SSP。
|
|
目前尚未实现。 |
|
接受客户端的凭据,即使证书颁发机构 (CA) 不在服务器的受信任 CA 列表中。 此常量仅由 SCHANNEL SSP 使用。 |
|
指定后,此标志指示客户端上的 RPC 运行时忽略错误,以建立支持委派的安全上下文。 通常,如果客户端请求委派,并且安全系统无法建立支持委派的安全上下文,则返回错误RPC_S_SEC_PKG_ERROR;指定此标志时,不返回任何错误。
注意 在 Windows XP 和早期客户端版本上不受支持,在 Windows 2000 和更早的服务器版本上不受支持。
|
|
指定时,此标志向 RPC 指定服务器是进行 RPC 调用的计算机的本地服务器。 在这种情况下,RPC 指示终结点映射器仅选取 由 ServerPrincName 或 Sid 成员中指定的主体注册的终结点, (这些成员在 RPC_SECURITY_QOS_V3、 RPC_SECURITY_QOS_V4 中可用,并且 仅RPC_SECURITY_QOS_V5) 。 有关更多信息,请参见备注。
注意 在 Windows XP 和早期客户端版本上不受支持,在 Windows 2000 和更早的服务器版本上不受支持。
|
IdentityTracking
设置上下文跟踪模式。 应设置为下表中显示的值之一。
值 | 含义 |
---|---|
|
安全上下文仅创建一次,在整个通信过程中永远不会修改,即使客户端对其进行更改也是如此。 如果未指定 RPC_SECURITY_QOS_V2 ,则这是默认行为。 |
|
每当客户端令牌中的 ModifiedId 发生更改时,将修改上下文。 所有协议都使用 ModifiedId (请参阅注释) 。
Windows 2000: 所有远程协议 (ncalrpc 以外的所有协议) 使用 AuthenticationID(也称为 LogonId)来跟踪客户端标识中的更改。 ncalrpc 协议使用 ModifiedId。 |
ImpersonationType
服务器进程可以模拟客户端的级别。
值 | 含义 |
---|---|
|
使用默认模拟级别。 |
|
客户端不向服务器提供标识信息。 服务器无法模拟客户端或标识客户端。 许多服务器拒绝使用此模拟类型的调用。 |
|
服务器可以获取客户端的标识,并模拟客户端来执行访问控制列表 (ACL) 检查,但不能模拟客户端。 有关详细信息 ,请参阅模拟级别 。
注意 某些安全提供程序可能会将此模拟类型视为等效于RPC_C_IMP_LEVEL_IMPERSONATE。
|
|
服务器可以在其本地系统上模拟客户端的安全上下文,但不能在远程系统上模拟客户端的安全上下文。 |
|
服务器可以在代表客户端的同时模拟客户端的安全上下文。 服务器还可以在代表客户端执行操作时向其他服务器发出传出调用。 服务器可以使用其他计算机上的客户端安全上下文作为客户端访问本地和远程资源。 |
AdditionalSecurityInfoType
指定 u 联合中存在的附加凭据的类型。 支持以下常量:
支持的常量 | 含义 |
---|---|
|
不会在 联合 中传递其他凭据。 |
|
u union 的 HttpCredentials 成员指向RPC_HTTP_TRANSPORT_CREDENTIALS结构。 仅当 ncacn_http协议序列时,才能使用此值。 任何其他协议序列返回RPC_S_INVALID_ARG。 |
u
u.HttpCredentials
要以 RPC_HTTP_TRANSPORT_CREDENTIALS 结构的形式传递给 RPC 的其他凭据集。 当 AdditionalSecurityInfoType 成员设置为 RPC_C_AUTHN_INFO_TYPE_HTTP 时使用。
注解
以下列表定义了各种 Windows 操作系统上 QOS 版本的可用性:
- 版本 1:Windows 2000 及更高版本。
- 版本 2:Windows XP with Service Pack 1 (SP1) 及更高版本。
- 版本 3:Windows Server 2003 及更高版本。
- 版本 4:Windows Vista 及更高版本。
- 版本 5:Windows 8 及更高版本。
客户端安全功能 RpcBindingInqAuthInfoEx 和 RpcBindingSetAuthInfo 使用 RPC_SECURITY_QOS 结构来查询或设置绑定句柄的服务质量。
RPC 支持RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT提示 (在 Windows XP 和早期客户端版本上不受支持,在 Windows 2000 和早期服务器版本) 上不受支持。 仅当使用动态终结点和相互身份验证时,才使用此提示。 此外, ncadg_ 协议序列不支持它。 如果此标志用于 ncadg_ 协议序列,或者不使用相互身份验证,则会从 RpcBindingSetAuthInfoEx 函数调用返回RPC_S_INVALID_ARG。 此标志旨在防止拒绝服务攻击。 使用此标志会强制 RPC 运行时仅向由 ServerPrincName 或 Sid 成员中指定的主体注册的终结点请求终结点映射器。 这可以防止本地计算机上的攻击者尝试欺骗 RPC 客户端连接到它在终结点映射器中注册的欺骗终结点。 请注意,由于攻击仅是本地 ((例如来自具有许多用户) 的终端服务器计算机),因此标志也仅适用于本地进行的 RPC 调用。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 具有 SP1 的 Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | rpcdce.h (包括 Rpc.h) |