2016-07-27 7 views
1

ためCustomCertificateValidatorを呼び出すように表示されます。WCFのServiceHostは、私はWCFのServiceHostのX509Certificate</p> <pre><code>Credentials.ServiceCertificate.Certificate = certificate; </code></pre> <p>とカスタムクライアント証明書の検証ツールを用いて固定したすべてのメッセージ

Credentials.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.Custom; 
Credentials.ClientCertificate.Authentication.CustomCertificateValidator = new CustomX509CertificateValidator(); 

InstanceContextModeとConcurrencyModeがデフォルト値です、PerSessionおよびSingle。

私のエンドポイントはトランスポートセキュリティを使用して、クライアント証明書が必要です。

BasicHttpBinding binding = new BasicHttpBinding(); 
binding.Security.Mode = BasicHttpSecurityMode.Transport; 
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate; 

AddServiceEndpoint(typeof(...), binding, endpoint); 

私が欲しい(と期待する)カスタムクライアント証明書のバリデータは、新しい接続時にSSLハンドシェイク中に、一度呼ばれるように、それがされています受信したすべてのメッセージに対して呼び出されます。

クライアント側のWCFトレースログには、最初のメッセージが送信されたときの4秒の遅延が含まれていますが、SSLハンドシェイク、暗号ネゴシエーション、鍵交換と見なされますが、

client trace, first message

2番目のメッセージが数秒後に、送信されたので、私は私が安全なセッションを持っているし、クライアントの証明書が送信されていないと想定され、該当する遅延はありません。

client trace, second message

しかし、カスタムクライアント証明書バリデータはまだ呼ばれています!

私は間違って何をしていますか?

+0

プロットは濃くなります! BasicHttpBindingでは、すべての呼び出しで新しいインスタンスがインスタンス化されるため、ホストのCustomCertificateValidatorはすべてのメッセージで呼び出されます。したがって、インスタンスコンテキストは常にPerCall with BasicHttpBindingです。 WSHttpBindingはセッションを許可しますが、他の意味があり、すべてのクライアントも変更する必要があります。うん! – MikeZ

+0

これは学習経験でした。バインディングとそのセキュリティ設定は、サービスインスタンスの動作を制御します。 certifcate資格情報を持つBasicHttpBindingはSSLハンドシェイクを1回ネゴシエートしますが、すべての呼び出しで新しいサービスインスタンスが取得されます。特に、サービスインスタンスオブジェクトが軽量である限り、接続や切断を追跡して報告したいが、恐ろしいことではない場合は、迷惑です。 WSHttpBindingはSSLハンドシェイクを1回ネゴシエートし、サービスインスタンスを保持します。他のバインディングにはおそらく独自の動作があります。 – MikeZ

答えて

0

サービスインスタンスの動作をよりよく理解したので、BasicHttpBindingバインディングの動作を行うことにしました。

私たちは、リモートSSLクライアントによって提示された証明書の証明書失効情報を記録することを望んでいましたが、すべてのメッセージに対してバリデーターが呼び出されたときに簡単に証明書失効情報を記録することはできません。本当に残念です。

すべてのクライアントでバインディングを変更せずにサービスでバインディングを簡単に変更する方法はありません。

私はWCFが本当に好きですが、バインディングとセキュリティの選択によってサービスインスタンスの動作が影響を受ける方法はあまり詳しくは書かれていません。

関連する問題

 関連する問題