RpcGetAuthorizationContextForClient 函数 (rpcasync.h)
RpcGetAuthorizationContextForClient 函数返回 RPC 客户端的 Authz 上下文,该上下文可与 Authz 函数一起使用以进行高性能身份验证。 仅支持 ncalrpc 和 ncacn_* 协议序列。
语法
RPC_STATUS RpcGetAuthorizationContextForClient(
[in, optional] RPC_BINDING_HANDLE ClientBinding,
[in] BOOL ImpersonateOnReturn,
[in] PVOID Reserved1,
[in, optional] PLARGE_INTEGER pExpirationTime,
[in] LUID Reserved2,
[in] DWORD Reserved3,
[in] PVOID Reserved4,
[out] PVOID *pAuthzClientContext
);
参数
[in, optional] ClientBinding
服务器上的绑定句柄,表示与客户端的绑定。 服务器模拟此句柄指示的客户端。 如果指定值零,服务器将模拟由此服务器线程提供服务的客户端。
[in] ImpersonateOnReturn
指示函数在返回时模拟客户端,然后返回 AUTHZ_CLIENT_CONTEXT_HANDLE 结构。 将此参数设置为非零以模拟客户端。 请参阅“备注”。
[in] Reserved1
保留。 必须为 Null。
[in, optional] pExpirationTime
指向令牌过期日期和时间的指针。 如果未传递任何值,则令牌永不过期。 当前未强制实施过期时间。
[in] Reserved2
保留。 必须是每个成员设置为零的 LUID 结构。
[in] Reserved3
保留。 必须为零。
[in] Reserved4
保留。 必须为 Null。
[out] pAuthzClientContext
指向可直接传递给 Authz 函数 的AUTHZ_CLIENT_CONTEXT_HANDLE 结构的指针。 如果函数失败,则此参数的内容未定义。
返回值
值 | 含义 |
---|---|
|
调用成功。 |
|
保留参数不同于其规定值。 |
|
RPC 客户端未成功进行身份验证。 |
失败返回RPC_S_* 错误代码或 Windows 错误代码。 扩展的错误信息可通过标准 RPC 或 Windows 错误代码检索机制获得。 有关有效错误代码的列表,请参阅 RPC 返回值。
注解
RpcGetAuthorizationContextForClient 函数可以在与 RpcImpersonateClient 函数相同的上下文中调用。 模拟的所有函数检查,以确定调用方是否具有 SeImpersonatePrivilege 特权。 如果调用方具有 SeImpersonatePrivilege,或者如果经过身份验证的标识与调用方相同,则允许请求的模拟。 否则,模拟仅在“标识”级别成功。
注意 在 Windows XP service Pack 2 (SP2) 之前,不支持 SeImpersonatePrivilege 特权。
rpcGetAuthorizationContextForClient 函数仅支持 ncalrpc 和 ncacn_* 协议序列,并且不支持仅实现传输安全性的命名管道。
RpcGetAuthorizationContextForClient 函数是线程安全的,可以从多个线程调用。 pAuthzClientContext 中返回的上下文独立于函数调用,可以在其完成之后使用。 调用方负责通过调用 RpcFreeAuthorizationContext 函数来释放上下文。
与以前的模拟或访问方法相比,使用 RpcGetAuthorizationContextForClient 函数观察到的性能改进检查或还原自,具体取决于以下因素:
- 为给定客户端标识调用函数的次数。
- 对函数调用生效的协议序列和标识跟踪。
通过具有静态标识跟踪的 ncalrpc 调用执行 RpcGetAuthorizationContextForClient 函数的速度比通过具有动态标识跟踪的 ncalrpc 调用要快。 对于给定的协议序列,通过 ncacn_* 执行的调用的速度大致相同,无论标识跟踪是静态的还是动态的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | rpcasync.h (包括 Rpc.h) |
Library | Rpcrt4.lib |
DLL | Rpcrt4.dll |