サービス品質 (RPC)
クライアント プログラムは、 RpcBindingSetAuthInfo 関数ではなく RpcBindingSetAuthInfoEx 関数 を 使用して、認証済みバインディングを作成できます。 その場合、RpcBindingSetAuthInfoEx の最終パラメーターとして、RPC_SECURITY_QOS構造体へのポインターを渡します。 この構造体には、サービスの品質に関する情報が含まれています。 クライアント プログラムでは、ID 追跡を指定し、偽装の種類を選択することもできます。
RPC_SECURITY_QOS構造体の Capabilities メンバーを使用して、クライアント/サーバー アプリケーションのどの部分を認証するかを設定します。 RPC_C_QOS_CAPABILITIES_DEFAULTが選択されている場合、RPC ランタイム ライブラリは SSP の既定値に従ってクライアントまたはサーバーを認証します。 既定では、Kerberos プロトコル SSP はクライアントとサーバーの両方を認証します。 Microsoft が提供する他のすべての SP の既定値は、サーバーに対してクライアントを認証することですが、クライアントに対するサーバーの認証は行いません。
クライアントとサーバーが常に相互に認証する必要がある場合は、RPC_SECURITY_QOS構造体の Capabilities メンバーを RPC_C_QOS_CAPABILITIES_MUTUAL_AUTH に設定します。 一部のセキュリティ プロバイダーでは、相互認証をサポートしていない場合があります。 このようなセキュリティ プロバイダー RPC_C_QOS_CAPABILITIES_MUTUAL_AUTHが指定されている場合は、リモート プロシージャ 呼び出しが行われるとエラーが返されます。 SCHANNEL SSP を使用する場合は、 Capabilities メンバーを RPC_C_QOS_CAPABILITIES_ANY_AUTHORITY に設定することもできます。 この定数は、クライアントの認証証明書を発行した証明機関が SSP のルート証明書ストアにない場合でも、SSP がリモート プロシージャ コールを検証することを指定します。 SSP が証明機関を認識しない場合、既定では証明書が拒否されます。 証明機関は、認証証明書を発行する独立した会社またはorganization (VeriSign など) です。
アプリケーションでは、RPC ランタイム ライブラリで使用される ID 追跡を設定することもできます。 通常、プログラムでは 静的 ID 追跡が使用されます。 静的追跡では、 RpcBindingSetAuthInfo 関数を呼び出すと、クライアントの資格情報が設定されます。 その後、RPC ランタイム ライブラリは、呼び出し元スレッドまたは呼び出し元プロセスの ID の変更に関係なく、バインディングのすべての RPC 呼び出しにこれらの資格情報を使用します。 アプリケーションでは、 動的 ID 追跡を選択することもできます。 動的 ID 追跡は、バインド ハンドルではなく、各呼び出し時に呼び出し元スレッドの資格情報を使用するように RPC ランタイム ライブラリに指示します。 既定の ID 追跡は静的です。
クライアントの ID が変更されない場合、静的 ID 追跡のパフォーマンス特性が向上し、呼び出し元スレッドの ID がセキュリティ システムに与えられた ID と同じであるかどうかを毎回チェックする際に RPC の実行時間を節約できます。 呼び出し元のスレッドの ID が呼び出しの間で変更される可能性があり、サーバーがそれらの変更を認識する必要がある場合は、動的な ID 追跡 (RPC の実行時は静かに効率的に ID を追跡し、ID が変更された場合は、ユーザーに代わってその変更を管理する) を指定することをお勧めします。
Note
ncalrpc 呼び出しの場合、静的 ID と動的 ID 追跡のパフォーマンス特性は異なります。状況によっては、どちらかの方が高速になる場合があります。
QOS 仕様の一部として、クライアント プログラムは、サーバー プログラムが代理で実行できる偽装の種類を設定することもできます。 詳細については、「 クライアントの偽装」を参照してください。
RPC_SECURITY_QOS構造体のバージョン番号フィールドは、常にRPC_C_SECURITY_QOS_VERSIONに設定する必要があります。