0

顧客向けのサービスを開発しようとしています。このサービスは、ファイアウォールの背後にあるイントラネット上に配置され、独自のデータベースがあります。サービスは、DMZ にある別の Web アプリケーションによって消費されます。さて、私の問題は、会社が DMZ からイントラネットへのポートを開かないという一種の厳格なポリシーを持っていることです。

1) ポートを開かずに、DMZ 上の Web アプリがイントラネット上の WCF サービスにアクセスすることは可能ですか?

2)そうでない場合、ポートを開くことができ、安全な解決策があることを説明する参照アーキテクチャはありますか? おそらく、証明書やある種のアソライズなどと組み合わせることができます。他のアプリがサービスを利用する必要はありません (少なくとも今のところ)。

よろしく/Valle

4

1 に答える 1

1

以前の回答をすべて削除して、少し「洗練」する必要がありました:)

というわけで、これが短い、より良いバージョンです。最高のものではありませんが、かなりうまく機能します。説明を簡単にするために、1 つのサービスと、それを利用したいクライアントがあるとします。

  1. ファイアウォールの外側で実行され、2 つ
    のサービスを公開するプロキシ サーバー アプリケーションを追加します。最初のサービスは元のサービスと同一です (同じアドレス、バインディング、コントラクト)
    2 つ目は、上記と同じコントラクトをコールバックとして持つ二重サービスです。サービス
  2. ファイアウォールの内側で実行され、プロキシ サーバーの 2 番目のサービスと元のサービスを消費するプロキシ クライアント アプリケーションを追加します。
  3. 元のクライアントは、元のサービスではなくプロキシ サーバーを使用します。

使い方:

  1. プロキシ クライアントがプロキシ サーバーに接続し、コールバックを登録します。
  2. プロキシ クライアントも元のサービスに接続します
  3. 元のクライアントがプロキシ サービスに接続する
  4. プロキシ サーバーは、サービスからのすべての呼び出しをコールバックに転送します (コントラクトが同じであることを思い出してください)。
  5. プロキシ クライアントは、コールバック実装からのすべての呼び出しを元のサービスのクライアントに転送します (契約は同じです)。
  6. 元のサービスは呼び出しを処理し、結果を返します
  7. 返信は逆の順序で元のクライアントに転送されます

元のクライアントは、元のサービスではなくプロキシ サーバーに接続していることを認識していないことに注意してください。

もう1つの注意点は、転送がコードで発生することです。これはあまり良くありません。.NET 4.0 の WCF にはルーティング サポートがありますが、コールバック チャネルのみをルーティングでき、直接チャネルもルーティングできないかどうかはわかりません。

役に立てば幸いです、ギカヌ

于 2010-06-10T11:44:29.997 に答える