WCFを使用してサーバーからの暗号化されていない応答を許可する
-
10-07-2019 - |
質問
WCFを使用してWebサービスに接続しています。サーバーで正しく認証し、リクエストを送信し、署名付きの応答を返すことができます。
唯一のことは、応答の本文が暗号化されていないことです。わかりました、それでいいです。それは私のサービスではなく、彼らが物事をどのように行うかの呼び出しではありません、私はただクライアントを書いています。
問題は、WCFが、応答メッセージの「Body」に必要な部分が暗号化されていないことを示すMessageSecurityExceptionを引き続き表示することです。 app.configのどこで、暗号化されていない2つの空飛ぶクラップスを渡せないように指定できますか?
レコードには、customBindingを使用しています。
解決
保護レベル(WCFのデフォルトは「EncryptAndSign」)は、サービス契約で設定されます。サービスメソッドを定義するインターフェイス:
[ServiceContract(Name="YourServiceContract",
Namespace="http://www.yourdomain.com/2009/09/WCF",
ProtectionLevel=ProtectionLevel.None)]
public interface IYourService
{
string SayHello(string inputString);
}
「ProtectionLevel.EncryptAndSign」に設定できます。 (デフォルト)、"署名"または"なし"。
ただし、リクエストに対して1つ、レスポンスに対して1つに設定することはできません。WCF通信の両方向に保護レベルが適用されます。
これらのトピックを説明する WCFセキュリティの基礎をご覧ください(これは特に2ページにあります)。
マーク
他のヒント
保護されたメッセージを送信し、応答の保護を解除する方法があります。ただし、Microsoftテクニカルサポートから要求する必要がある修正プログラムが必要です。これにより、再発する要求を必要とするが、セキュリティで保護されていない障害を送り返す政府サービスで作業するときに節約できました。ホットフィックスの詳細については、こちらをご覧ください。