セキュリティ 一括ネゴシエーション
セキュリティ ブランケットは、プロセス内のすべてのプロキシまたは特定のインターフェイス プロキシのみに適用されるセキュリティ設定を記述する値のグループです。 セキュリティ ブランケットは、次の値で構成されます。
- 認証サービス
- 承認サービス
- プリンシパル名
- 認証レベル
- 偽装レベル
- 認証 ID
- 資格
- アクセス制御リスト (ACL) (サーバーのみ)
セキュリティ 一括ネゴシエーションは、プロキシの作成時に COM がセキュリティ設定を選択するために使用するプロセスです。 このプロセスでは、サーバーのセキュリティ ブランケットをクライアントのセキュリティ ブランケットと比較し、これらの値を使用してプロキシに適切な既定のセキュリティ ブランケットを作成します。 次の段落では、クライアントとサーバーのセキュリティ ブランケットの由来について説明し、COM がクライアントとサーバーのセキュリティ ブランケットを使用してプロキシのセキュリティ ブランケットをネゴシエートする方法について説明します。
クライアントとサーバーは、それぞれ CoInitializeSecurity呼び出して、それぞれのセキュリティ ブランケットを指定できます。 アプリケーションが CoInitializeSecurity 明示的に呼び出さない場合、COM は適切な既定値を使用して、アプリケーションに対して暗黙的に呼び出します。 これらの既定値の詳細については、「COM セキュリティの既定値の」を参照してください。
CoInitializeSecurity に適用されるパラメーターの中には、アプリケーションがサーバーである場合に適用されるパラメーターと、アプリケーションがクライアントである場合に適用されるパラメーターがあります。 アプリケーションがサーバーとして機能している場合、ACL、認証サービス/承認サービス/プリンシパル名タプルの一覧、認証レベルなどのパラメーターが関連します。 CoInitializeSecurityに対するサーバーの呼び出しによって、暗黙的か明示的かに関係なく、サーバーのセキュリティ ブランケットが決まります。これは固定されたままです。
アプリケーションがクライアントとして動作している場合、CoInitializeSecurity に渡される次の値が関連します。認証レベル、偽装レベル、認証 ID、および機能です。 CoInitializeSecurity を するクライアントの暗黙的または明示的な呼び出しは、クライアントが必要とするセキュリティ の一括処理を示します。
プロキシが作成されると、COM はサーバーのセキュリティ ブランケットとクライアントのセキュリティ ブランケットで指定された値を使用して、プロキシに適した既定のセキュリティ ブランケットをネゴシエートします。 COM は、クライアントとサーバーの両方で動作する認証サービスを選択します。 認証サービスを操作するために、承認サービスとプリンシパル名が選択されます。 認証レベルの場合、COM は、クライアントとサーバーによって指定された認証レベルの上位を選択します。 偽装レベルと COM によって選択される機能は、クライアントによって指定された機能です。 認証 ID は、選択した認証サービスに対してクライアントによって指定された ID です。
既定のセキュリティ ブランケットが計算されると、その値が新しく作成されたプロキシに割り当てられます。 クライアントは、IClientSecurity::SetBlanketを呼び出すことによって、プロキシのセキュリティ設定をオーバーライドできます。 SetBlanket 指定された値はネゴシエートされません。指定されたプロキシに割り当てられるだけです。 ただし、既定のパラメーター (RPC_C_IMP_LEVEL_DEFAULT など) SetBlanketに渡された場合、COM は前述のセキュリティ ブランケット ネゴシエーション アルゴリズムを使用して既定のパラメーターを計算します。
関連トピック
-
COM の セキュリティ