インターフェイス プロキシ レベルでのセキュリティの設定

場合によっては、クライアントは特定のインターフェイスへの呼び出しのセキュリティをきめ細かく制御する必要があります。 たとえば、プロセスのセキュリティは低いレベルに設定されている場合がありますが、特定のインターフェイスへの呼び出しには暗号化などのより高い認証レベルが必要な場合があります。 IClientSecurity インターフェイスのメソッドを使用すると、クライアントは、インターフェイス プロキシ レベルでセキュリティ設定を制御することで、特定のインターフェイスへの呼び出しに関連付けられているセキュリティ設定を変更できます。

クライアントは、IClientSecurity の既存のオブジェクトに対してクエリを実行し、IClientSecurity::QueryBlanket メソッドを呼び出して、特定のインターフェイス プロキシの現在のセキュリティ設定を確認できます。 IClientSecurity::SetBlanket メソッドを使用して、インターフェイスのいずれかのメソッドを呼び出す前に、オブジェクトの個々のインターフェイス プロキシのセキュリティ設定を変更できます。 新しい設定は、この特定のインターフェイスの今後の呼び出し元に適用されます。 IClientSecurity::CopyProxy メソッドは、クライアントがインターフェイス プロキシをコピーする方法を提供し、コピーの SetBlanket への後続の呼び出しが元のプロキシの呼び出し元に影響しないようにします。

SetBlanket は、一般的に、特定のインターフェイス プロキシの認証レベルを高いレベルのセキュリティ保護に引き上げるために使用されます。 ただし、状況によっては、特定のインターフェイス プロキシの認証レベルを下げることも役立つ場合があります。 たとえば、プロセスの既定の認証レベルが RPC_C_AUTHN_LEVEL_NONE 以外の値で、クライアントとサーバーが相互に信頼しない別のドメインにあるとします。 この場合、クライアントが SetBlanket を呼び出して認証レベルを RPC_C_AUTHN_LEVEL_NONE に下げない限り、サーバーへの呼び出しは失敗します。

プロキシ マネージャーによって提供される IClientSecurity の既定の実装を使用するクライアントは、IClientSecurity メソッドを直接呼び出す代わりに、CoQueryProxyBlanketCoSetProxyBlanket、および CoCopyProxy ヘルパー関数を呼び出すことができます。 ヘルパー関数はコードを簡略化しますが、対応する IClientSecurity メソッドを直接呼び出すよりも効率が若干劣ります。

IClientSecurity インターフェイスは、プロキシ マネージャーによってクライアント用にローカルに実装されます。 一部のカスタム マーシャリング オブジェクトでは、IClientSecurity がサポートされない場合があります。

IClientSecurity は、サポートされているすべての認証サービス (現在 NTLMSSP、Schannel、Kerberos v5 プロトコル) で動作します。

COMアプリケーションのセキュリティの設定