RPC_SECURITY_QOS_V2_W 構造体 (rpcdce.h)

RPC_SECURITY_QOS_V2構造では、バインディング ハンドルに対してバージョン 2 のセキュリティのサービス品質設定を定義します。 Windows エディションでのバージョンの可用性については、「解説」を参照してください。

構文

typedef struct _RPC_SECURITY_QOS_V2_W {
  unsigned long Version;
  unsigned long Capabilities;
  unsigned long IdentityTracking;
  unsigned long ImpersonationType;
  unsigned long AdditionalSecurityInfoType;
  union {
    RPC_HTTP_TRANSPORT_CREDENTIALS_W *HttpCredentials;
  } u;
} RPC_SECURITY_QOS_V2_W, *PRPC_SECURITY_QOS_V2_W;

メンバー

Version

使用されている RPC_SECURITY_QOS 構造体のバージョン。 このトピックでは、 RPC_SECURITY_QOS 構造のバージョン 2 について説明します。 他 バージョンについては、「RPC_SECURITY_QOS、 RPC_SECURITY_QOS_V3RPC_SECURITY_QOS_V4RPC_SECURITY_QOS_V5 」を参照してください。

Capabilities

アプリケーションに提供されているセキュリティ サービス。 機能は、ビットごとの OR 演算子を使用して組み合わせることができるフラグのセットです。

意味
RPC_C_QOS_CAPABILITIES_DEFAULT
プロバイダー固有の機能が必要ない場合に使用されます。
RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH
このフラグを指定すると、RPC ランタイムはセキュリティ プロバイダーに相互認証を要求します。 一部のセキュリティ プロバイダーでは、相互認証がサポートされていません。 セキュリティ プロバイダーが相互認証をサポートしていない場合、またはサーバーの ID を確立できない場合、このようなサーバーへのリモート プロシージャ コールはエラー RPC_S_SEC_PKG_ERRORで失敗します。
メモ RPC は SSP に依存して、どのセキュリティ オプションが正常にネゴシエートされたかを示します。RPC は、SSP がオプションをネゴシエートできなかったと報告する呼び出しに失敗します。 ただし、一部のセキュリティ プロバイダーは、オプションが正常にネゴシエートされなかった場合でも、オプションのネゴシエーションが成功したことを報告することが知られています。 たとえば、NTLM では、相互認証をサポートしていないにもかかわらず、下位互換性の理由から相互認証のネゴシエーションが成功したことが報告されます。 セキュリティ オプションに関する動作を判断するために使用されている特定の SSP を確認します。
 
RPC_C_QOS_CAPABILITIES_MAKE_FULLSIC
現在、実装されていません。
RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY
証明機関 (CA) がサーバーの信頼された CA の一覧にない場合でも、クライアントの資格情報を受け入れます。 この定数は、SCHANNEL SSP でのみ使用されます。
RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE
このフラグを指定すると、クライアント上の RPC ランタイムに対して、委任をサポートするセキュリティ コンテキストを確立するためのエラーを無視するように指示されます。 通常、クライアントが委任を要求し、セキュリティ システムが委任をサポートするセキュリティ コンテキストを確立できない場合は、エラー RPC_S_SEC_PKG_ERRORが返されます。このフラグを指定すると、エラーは返されません。
メモ Windows XP 以前のクライアント エディションではサポートされていません。Windows 2000 以前のサーバー エディションではサポートされていません。
 
RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT
このフラグを指定すると、RPC 呼び出しを行うマシンに対してサーバーがローカルであることを RPC に指定します。 この状況では、RPC は、 ServerPrincName または Sid メンバーで指定されたプリンシパルによって登録されたエンドポイントのみを取得するようにエンドポイント マッパーに指示します (これらのメンバーは 、RPC_SECURITY_QOS_V3RPC_SECURITY_QOS_V4RPC_SECURITY_QOS_V5 でのみ使用できます)。 詳細については、「解説」を参照してください。
メモ Windows XP 以前のクライアント エディションではサポートされていません。Windows 2000 以前のサーバー エディションではサポートされていません。
 

IdentityTracking

コンテキスト追跡モードを設定します。 次の表に示す値のいずれかに設定する必要があります。

意味
RPC_C_QOS_IDENTITY_STATIC
セキュリティ コンテキストは 1 回だけ作成され、クライアント側で変更された場合でも、通信全体で変更されることはありません。 これは、RPC_SECURITY_QOS_V2が指定されていない場合の既定の動作です。
RPC_C_QOS_IDENTITY_DYNAMIC
クライアントのトークン内の ModifiedId が変更されるたびにコンテキストが変更されます。 すべてのプロトコルで ModifiedId が使用されます (注を参照)。

Windows 2000: すべてのリモート プロトコル ( ncalrpc 以外のすべてのプロトコル) では、AuthenticationID (LogonId とも呼ばれます) を使用して、クライアントの ID の変更を追跡します。 ncalrpc プロトコルでは ModifiedId が使用されます。

ImpersonationType

サーバー プロセスがクライアントを偽装できるレベル。

意味
RPC_C_IMP_LEVEL_DEFAULT
既定の偽装レベルを使用します。
RPC_C_IMP_LEVEL_ANONYMOUS
クライアントは、識別情報をサーバーに提供しません。 サーバーは、クライアントを偽装したり、クライアントを識別したりできません。 多くのサーバーでは、この偽装の種類の呼び出しが拒否されます。
RPC_C_IMP_LEVEL_IDENTIFY
サーバーはクライアントの ID を取得し、クライアントを偽装してAccess Controlリスト (ACL) チェックを実行できますが、クライアントを偽装することはできません。 詳細については、「 偽装レベル 」を参照してください。
メモ セキュリティ プロバイダーによっては、この偽装の種類をRPC_C_IMP_LEVEL_IMPERSONATEと同等として扱う場合があります。
 
RPC_C_IMP_LEVEL_IMPERSONATE
サーバーは、ローカル システムではクライアントのセキュリティ コンテキストを偽装できますが、リモート システムでは偽装できません。
RPC_C_IMP_LEVEL_DELEGATE
サーバーはクライアントのセキュリティ コンテキストを偽装しつつ、そのクライアントに代わってアクションを実行できます。 サーバーは、クライアントに代わって動作しながら、他のサーバーへの発信呼び出しを行うこともできます。 サーバーは、他のマシン上のクライアントのセキュリティ コンテキストを使用して、クライアントとしてローカル リソースとリモート リソースにアクセスできます。

AdditionalSecurityInfoType

u 共用体に存在する追加の資格情報の種類を指定します。 次の定数がサポートされています。

サポートされている定数 意味
0
u 共用体には追加の資格情報は渡されません。
RPC_C_AUTHN_INFO_TYPE_HTTP
u 共用体の 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 Service Pack 1 (SP1) 以降。
  • バージョン 3: Windows Server 2003 以降。
  • バージョン 4: Windows Vista 以降。
  • バージョン 5: Windows 8以降。
Windows エディションでは、ダウンレベル バージョンもサポートされています。 たとえば、Windows Server 2003 ではバージョン 3 がサポートされていますが、バージョン 1 と 2 もサポートされています。

クライアント側のセキュリティ関数 RpcBindingInqAuthInfoExRpcBindingSetAuthInfo では、 RPC_SECURITY_QOS 構造を使用して、バインディング ハンドルのサービスのセキュリティ品質を問い合わせるか、設定します。

RPC では、RPC_C_QOS_CAPABILITIES_LOCAL_MA_HINT ヒントがサポートされています (Windows XP 以前のクライアント エディションではサポートされていません。Windows 2000 以前のサーバー エディションではサポートされていません)。 このヒントは、動的エンドポイントと相互認証が使用される場合にのみ使用されます。 さらに、 ncadg_ プロトコル シーケンスではサポートされていません。 このフラグがncadg_プロトコル シーケンスに使用されている場合、または相互認証を使用しない場合、RPC_S_INVALID_ARGは RpcBindingSetAuthInfoEx 関数呼び出しから返されます。 このフラグは、サービス拒否攻撃を防ぐために設計されています。 このフラグを使用すると、 SERVERPrincName または Sid メンバーで指定されたプリンシパルによって登録されたエンドポイントに対してのみ、RPC ランタイムがエンドポイント マッパーに対してのみ要求されます。 これにより、ローカル コンピューター上の攻撃者が RPC クライアントをだまして、エンドポイント マッパーに登録したスプーフィング エンドポイントに接続することを防ぎます。 攻撃はローカルのみであるため (多くのユーザーを持つターミナル サーバー コンピューターなど)、フラグはローカルで行われた RPC 呼び出しに対してのみ機能します。

メモ Kerberos などの一部のセキュリティ プロバイダーでは、委任の偽装の種類がサポートされています。 委任偽装の種類をサポートする Windows エディションでは、クライアントが委任を要求したが、セキュリティ プロバイダーが委任を提供できない場合、RPC_C_QOS_CAPABILITIES_IGNORE_DELEGATE_FAILURE フラグが指定されていない限り、呼び出しは PRC_S_SEC_PKG_ERROR で失敗します。
 

要件

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

こちらもご覧ください

RPC_HTTP_TRANSPORT_CREDENTIALS

RPC_SECURITY_QOS

RPC_SECURITY_QOS_V3

RPC_SECURITY_QOS_V4

RPC_SECURITY_QOS_V5

RpcBindingInqAuthInfoEx

RpcBindingSetAuthInfoEx