RpcGetAuthorizationContextForClient 関数 (rpcasync.h)

RpcGetAuthorizationContextForClient 関数は、高パフォーマンス認証のために Authz 関数と共に使用できる RPC クライアントの 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

クライアントへのバインドを表すサーバー上のバインド ハンドル。 サーバーは、このハンドルによって示されるクライアントを偽装します。 値 0 を指定すると、サーバーは、このサーバー スレッドによって処理されるクライアントを偽装します。

[in] ImpersonateOnReturn

戻り時にクライアントを偽装し、 AUTHZ_CLIENT_CONTEXT_HANDLE 構造体を返すように関数に指示します。 クライアントを偽装するには、このパラメーターを 0 以外に設定します。 「解説」を参照してください。

[in] Reserved1

予約済み。 null である必要があります。

[in, optional] pExpirationTime

トークンの有効期限の日付と時刻へのポインター。 値が渡されない場合、トークンの有効期限は切れません。 有効期限は現在適用されていません。

[in] Reserved2

予約済み。 各メンバーが 0 に設定された LUID 構造体である必要があります。

[in] Reserved3

予約済み。 ゼロを指定してください。

[in] Reserved4

予約済み。 null である必要があります。

[out] pAuthzClientContext

Authz 関数に直接渡すことができる AUTHZ_CLIENT_CONTEXT_HANDLE 構造体へのポインター。 関数が失敗した場合、このパラメーターの内容は未定義です。

戻り値

意味
RPC_S_OK
呼び出しは成功しました。
RERROR_INVALID_PARAMETER
予約済みパラメーターは、指定された値とは異なります。
RPC_S_NO_CONTEXT_AVAILABLE
RPC クライアントが正常に認証されていません。
 

エラーは、RPC_S_* エラー コードまたは Windows エラー コードを返します。 拡張エラー情報は、標準の RPC または Windows エラー コード取得メカニズムを通じて使用できます。 有効なエラー コードの一覧については、「 RPC 戻り値」を参照してください。

注釈

RpcGetAuthorizationContextForClient 関数は、RpcImpersonateClient 関数と同じコンテキストで呼び出すことができます。 呼び出し元が SeImpersonatePrivilege 特権を持っているかどうかを判断するために、チェックを偽装するすべての関数。 呼び出し元に SeImpersonatePrivilege がある場合、または認証された ID が呼び出し元と同じ場合は、要求された偽装が許可されます。 それ以外の場合、偽装は識別レベルでのみ成功します。

メモ SeImpersonatePrivilege 特権は、Windows XP Service Pack 2 (SP2) までサポートされません。

RpcGetAuthorizationContextForClient 関数は、ncalrpc および ncacn_* プロトコル シーケンスでのみサポートされており、トランスポート セキュリティのみを実装する名前付きパイプではサポートされていません。

RpcGetAuthorizationContextForClient 関数はスレッド セーフであり、複数のスレッドから呼び出すことができます。 pAuthzClientContext で返されるコンテキストは関数呼び出しに依存せず、その完了後に使用できます。 呼び出し元は、 RpcFreeAuthorizationContext 関数の呼び出しでコンテキストを解放する役割を担います。

RpcGetAuthorizationContextForClient 関数を使用して観察されるパフォーマンスの向上は、以前の偽装またはアクセスの方法と比較した場合、チェックまたは自己に戻す場合は、次の要因によって異なります。

  • 特定のクライアント ID に対して関数が呼び出される回数。
  • 関数呼び出しで有効なプロトコル シーケンスと ID 追跡。
同じクライアント ID に対する RpcGetAuthorizationContextForClient 関数の後続の呼び出しは、非常に低コストです。 この効率は、以前の問い合わせがキャッシュされ、可能な限りキャッシュから応答が返されることによって実現されます。

静的 ID 追跡を使用して ncalrpc を呼び出す場合、動的 ID 追跡を使用して ncalrpc 経由で呼び出すよりも高速に RpcGetAuthorizationContextForClient 関数が実行されます。 ncacn_* を介した呼び出しは、ID 追跡が静的か動的かに関係なく、特定のプロトコル シーケンスに対してほぼ同じ速度で実行されます。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー rpcasync.h (Rpc.h を含む)
Library Rpcrt4.lib
[DLL] Rpcrt4.dll

こちらもご覧ください

クライアント/サーバー Access Control関数

LUID

RPC 戻り値

RpcFreeAuthorizationContext

RpcImpersonateClient