RPC_BINDING_HANDLE_SECURITY_V1_A 構造体 (rpcdce.h)

RPC_BINDING_HANDLE_SECURITY_V1構造体には、RPC バインド ハンドルを作成するための基本的なセキュリティ オプションが含まれています。

構文

typedef struct _RPC_BINDING_HANDLE_SECURITY_V1_A {
  unsigned long             Version;
  unsigned char             *ServerPrincName;
  unsigned long             AuthnLevel;
  unsigned long             AuthnSvc;
  SEC_WINNT_AUTH_IDENTITY_A *AuthIdentity;
  RPC_SECURITY_QOS          *SecurityQos;
} RPC_BINDING_HANDLE_SECURITY_V1_A, *PRPC_BINDING_HANDLE_SECURITY_V1_A;

メンバー

Version

この構造体のバージョン。 RPC_BINDING_HANDLE_SECURITY_V1の場合、これは 1 に設定する必要があります。

ServerPrincName

バインド ハンドルによって参照されるサーバー プリンシパル名を含む文字列へのポインター。 名前とその構文の内容は、使用中の認証サービスによって定義されます。

AuthnLevel

このバインド ハンドルを使用して行われたリモート プロシージャ 呼び出しで実行される認証のレベル。 RPC でサポートされる認証レベルの一覧については、「 認証レベルの定数」を参照してください。

AuthnSvc が RPC_C_AUTHN_NONE に設定されている場合は、同様にこのメンバーを RPC_C_AUTHN_NONE に設定する必要があります。

AuthnSvc

バインド時に使用する認証サービス。

バインド ハンドルを使用して行われたリモート プロシージャ 呼び出しの認証を無効にするには、RPC_C_AUTHN_NONEを指定します。

RPC_C_AUTHN_DEFAULTが指定されている場合、RPC ランタイム ライブラリは、バインド ハンドルを使用して行われるリモート プロシージャ 呼び出しにRPC_C_AUTHN_WINNT認証サービスを使用します。

AuthnLevel が RPC_C_AUTHN_NONE に設定されている場合は、同様にこのメンバーを RPC_C_AUTHN_NONE に設定する必要があります。

AuthIdentity

SEC_WINNT_AUTH_IDENTITY 、選択した認証および承認サービスに適したクライアントの認証資格情報と承認資格情報を含む構造体です。

SecurityQos

RPC_SECURITY_QOS バインディング ハンドルのセキュリティサービス品質設定を含む構造体です。

メモ RPC でサポートされる認証サービスの一覧については、「 Authentication-Service Constants」を参照してください。
 

注釈

この構造体が RpcBindingCreate に渡されない場合(つまり、RpcBindingCreateSecurity パラメーターが NULL に設定されている場合)、次の既定のセキュリティ動作が想定されます。

  • プロトコル シーケンス ncalrpc (ローカル RPC) の場合、RPC はトランスポート レベルのセキュリティを使用します。 つまり、RPC は Windows カーネルによって提供されるセキュリティ メカニズムを使用してセキュリティを提供し、RPC は現在のスレッド ID を使用して接続するため、サーバーを認証しません。 この場合、ID 追跡は静的であり、偽装の種類は "Impersonate" に設定され、認証レベルは "Privacy" に設定されます。
  • プロトコル シーケンス ncacn_npの場合、RPC ではトランスポート レベルのセキュリティも使用されます。 呼び出しがリモートの場合、RPC は Windows ファイル システム リダイレクターによって提供されるセキュリティ メカニズムを使用し、相互認証はありません。 この場合、ID は現在のスレッド ID、ID 追跡状態は静的、偽装の種類は "偽装" に設定され、認証レベルはリモート コンピューターのポリシーによって決定されます。

    呼び出しがローカルの場合、RPC は名前付きパイプ ファイル システム (NPFS) によって提供されるセキュリティ メカニズムを使用し、相互認証もありません。 この場合、ID は現在のスレッド ID、またはサーバーの "net use" コマンドによって確立された任意の ID です。 ID 追跡の状態は動的であり、偽装の種類は "Impersonate" に設定され、認証レベルは "Privacy" に設定されます。

  • プロトコル シーケンスncacn_ip_tcp、ncacn_ip_udp、ncacn_httpの場合、Security が NULL に設定されている場合、セキュリティは使用されません。 サーバーは偽装を実行せず、すべてのデータがクリア テキストとして送信されます。 データを最大限に保護するには、アプリケーションで常にセキュリティ データを提供する必要があります。

次の表は、RpcBindingCreate の Security パラメーターが NULL に設定されている場合の、さまざまなプロトコル シーケンスの既定のセキュリティ設定をまとめたものです。

既定のセキュリティ設定 ncalrpc ローカル ncacn_np リモート ncacn_np ncacn_ip_tcp、ncacn_ip_udp、およびncacn_http
セキュリティ メカニズム Windows カーネル NPFS ファイル システム リダイレクター なし
[認証レベル] プライバシー プライバシー サーバー ポリシーに依存 なし
相互認証? いいえ いいえ いいえ いいえ
偽装の種類 Impersonate Impersonate Impersonate 該当なし
ID 追跡の種類 静的 動的 静的 該当なし
[有効のみ] はい いいえ 該当なし 該当なし
呼び出し ID 現在のスレッド 現在のスレッド 現在のスレッドまたは "net use" 設定 該当なし
 
メモRpcBindingFromStringBinding API を呼び出してバインド ハンドルを作成する場合、特定のセキュリティ設定がない場合の ncalrpc の既定の ID 追跡は動的です。

RpcBindingCreate API を呼び出して高速バインディング ハンドルを作成する場合、特定のセキュリティ設定がない場合の ncalrpc の既定の ID 追跡は静的です。

アプリケーションで切り替える場合は、これら 2 つの API の違いに注意する必要があります。

バインド ハンドルが作成されると、 RpcBindingSetAuthInfo API と RpcBindingSetAuthInfoEx API を使用して、この構造体で設定されたバインド ハンドルの設定を変更できます。

 

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
Header rpcdce.h (Rpc.h を含む)

こちらもご覧ください

RPC_BINDING_HANDLE

RpcBindingBind

RpcBindingCreate