2011-10-18 5 views
1

WCFサービスと複数のWCFクライアントを異なる場所に展開した製品を開発しています。サービスを保護するために、WCFが証明書を介してメッセージセキュリティを使用するように設定しました。具体的にはWCFメッセージセキュリティは証明書が削除された状態で動作し続けます

、これらは私のサービス設定ファイルです: Web.configApp.config

これは、証明書はスマートカードに保存されている場合でも、私の知る限り正常に動作している(WCFでもダイアログ尋ねるがポップアップ証明書のロックを解除するためにスマートカードのPINを入力してください)。

しかし、最初のセキュリティネゴシエーションが行われた後にスマートカードを削除しても、接続には何の影響もありません。Webサービス上のメソッドを引き続き呼び出すことができます。

何が起こっているか

  • 対称鍵は初期のセキュリティネゴシエーション中に確立されておらず、その後、証明書が不要になったHTTPSに類似WCFメッセージセキュリティの仕事をしていますか?

  • または、クライアントを認証するために証明書のみを使用するようにサービスを設定している可能性もありますが、メッセージはまったく暗号化されません。

答えて

3

これは、セキュリティ設定でセキュリティコンテキスト(WsHttpBindingの既定値)が使用されているためです。セキュリティコンテキスト(WS-SecureConversationの実装)は、実際にHTTPSと同様に機能します。これは、同じサービスプロキシインスタンスからの後続の通信を保護するために使用されるセキュリティトークンの初期認証と生成にのみ証明書を使用します。コンテキストはサービスプロキシインスタンスとして確立され、タイムアウトの対象となるWCFセッションも確立されます。

+0

私は、パスワードで保護された秘密鍵で証明書を使用すると、クライアントは*まだ*認証しています - 私に鍵を要求しないで(そして私はそれを証明書ストア)。私はそれがどのように可能であるのだろうか。 – Cygon

0
<security mode="Message"> 
    <message clientCredentialType="Certificate" negotiateServiceCredential="false" establishSecurityContext="false" /> 
    </security> 

falseにestablishSecurityContextを設定してみてください。

関連する問題