インターネット ホスティング プロバイダーにデプロイされた Web アプリケーションがあります。この Web アプリケーションは、会社のアプリケーション サーバーにある IIS サーバーに展開された WCF サービスを使用します。会社のデータベースにデータ アクセスするために、ネットワーク担当者は、セキュリティ上の理由から、ファイアウォールを介してこの WCF サービスを公開することを許可しました。ダイアグラムは次のようになります。
[ホストされたページ] ---> (インターネット) ---> |ファイアウォール
<Public IP>:<Port-X >
| ---> [IIS と WCF サービス<Comp. Network Ip>:<Port-Y>
]
また、wsHttpBinding を使用して、そのセキュリティ機能を利用し、重要な情報を暗号化したいと考えていました。
試してみると、次のエラーが表示されます。
例外の詳細: System.ServiceModel.EndpointNotFoundException: To 'http://:/service/WCFService.svc' を含むメッセージは、EndpointDispatcher での AddressFilter の不一致により、受信側で処理できません。送信者と受信者の EndpointAddresses が一致していることを確認してください。
調査の結果、wsHttpBinding が WS-Addressing 標準を使用していることがわかりました。この標準について読んで、SOAP ヘッダーが拡張され、「MessageID」、「ReplyTo」、「Action」、「To」などのタグが含まれていることがわかりました。
クライアント アプリケーションのエンドポイントがファイアウォールの IP アドレスとポートを指定し、サービスがファイアウォールの IP とは異なる内部ネットワーク アドレスで応答するため、WS-Addressing が上記のメッセージを送信すると推測しています。これは非常に優れたセキュリティ対策だと思いますが、私のシナリオではあまり役に立ちません。
WS-Addressing 標準提出の引用 ( http://www.w3.org/Submission/ws-addressing/ )
「現在広く使用されているさまざまなネットワーク技術 (NAT、DHCP、ファイアウォールなど) のため、多くの展開では、特定のエンドポイントに意味のあるグローバル URI を割り当てることができません。これらの「匿名」エンドポイントがメッセージ交換パターンを開始できるようにするには、 WS-Addressing は、安定した解決可能な URI を持つことができないエンドポイントで使用する次の既知の URI を定義します。 http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous "
ファイアウォールの IP アドレスを指定し、SOAP メッセージ ヘッダーの「To」WS-Addressing タグで指定されたアドレスを無視またはバイパスするように wsHttpBinding エンドポイントを構成するにはどうすればよいですか? または、サービス エンドポイント構成で何かを変更する必要がありますか?
ヘルプとガイダンスをいただければ幸いです。
マルコ。
PS:これに対する解決策を見つけましたが、basicHttpBindingを使用していますが、もちろん問題はありません。