それは、SSLせずにメッセージの資格情報を渡すためにWCFクライアントをハックすることは可能ですか?
-
13-09-2019 - |
質問
I しばらくは戻って私の負荷分散ファームがIISを経由してサービスをホストできるようにするために結合WCFカスタムをを書きました。カスタムバインディングの理由は、各サーバーがSSLを持っていなかったということでしたが、ユーザ名+パスワードのクライアント証明書を受け入れる能力を必要としていました。トラフィックがファイアウォールの外側に暗号化されるので、このファームの前にプロキシがSSLを持っています。このカスタムバインディングが正常に動作しますが、今、私はローカル私のマシンからのトラフィックを監視する必要がある時点でだと、ミックスの中で、このワット/アウトSSLをやってみたかったです。
問題はこれです - .NETクライアント上で、私は私のセキュリティモードを設定している場合=「TransportWithMessageCredentialは」私は楽しいエラー「無効なスキーム、期待https」の
を取得し、他のSSLを持っている必要がありますは、そのSSLが欠落している「無視」が、それでも私はSOAPヘッダを経由してユーザ名+パスワードを通過させるために、クライアントのために何かのカスタムを書くために、それは可能ですか?
解決
うん、私はこのAに関するブログ記事を書きました"方法:SSLパススルーとWCF - または - TransportWithMessageCredentialプレーンHTTP経由"。
にそれの短いあなたがセキュリティの提供については、「嘘」独自のHttpTransportBindingElement
のサブクラスを作成する必要があるということです。
他のヒント
修正プログラムのSecurityBindingElementにAllowInsecureTransportプロパティを追加し、.NET 3.5 SP1のためにあります。また、これは、.NET 4のベータ2になります。
私はあなただけでセキュリティモード=「メッセージ」を使用する場合は、エラーを取得することを、あなたのカスタムバインディングに、仮定しますか? (私は間違っていない場合)は、セキュリティモードでwsHttpBindingを使用することができますので、カスタムバインディングは、本当に必要ではなかった=「メッセージ」(SSLを必要としない)。
別の方法としては、単に、SSL証明書を自分で生成するIISでそれをインストールし、信頼をあなたの呼び出し元のコード内のすべての証明書ポリシーを実装することですが、(安全でないチャネルを介してユーザー名とパスワードを送信しているとして)これは、一般的に眉をひそめるされますます。
第三の選択肢は、あなたがすでに送信することができるものは何でもオブジェクトと一緒に情報を送信できるようにパラメータとしてユーザー名とパスワード(またはトークンのいくつかの並べ替えを)受け入れるようにご契約の運用を変更したり、データコントラクトを変更することです。