2009-04-17 8 views
2

私はWCFアプリケーションの設計に忙しいです。アプリの目的は、保険会員がウェブを介して保険情報にアクセスできるようにすることです。WCFアーキテクチャ

問題は私たちのネットワークアーキテクチャにあります。私は、使用する必要があるセキュリティのタイプまたは組み合わせを正確には分かりません。

私たちの内部ネットワークには、EntireX .netラッパーを使用してアクセスするUNIX環境があり、Enterpriseライブラリ経由でアクセスできるOracle 10gデータストアがあります。

私は、エンタープライズライブラリ/ EntireX経由でこれらのオブジェクトを設定するビジネスオブジェクトとDALを含むBLLを作成しました。

2つのWCFサービス(1つはOracleストアにアクセスするため、もう1つはUNIXにアクセスするためのもの)を使用してWCFサービス層を作成し、BLLを参照します。

ファイアウォール内のSQL 2005を使用する運用サーバー上でIISでこのサービスをホストする予定です。 DMZを作成するWebサーバーを購入しました。このWebサーバーは、ポート443および/またはポート80経由で本番サーバーと通信します。当社のインターネットは、DMZ内のWebサーバーにアクセスできます。

プレゼンテーション層は、Channelfactoryを使用してコード内でサービスを呼び出すASP.Netフロントエンドになります。私は、クライアントがサービスに提示しなければならないX509クライアント証明書を使用します。サービスはSSLで保護されています。フロントエンドはDMZ内のWebサーバー上にあります。

私はトランスポートセキュリティとclientCredentialType = "Certificate"を使用してwsHttpBindingを使用していますが、うまくいきますが、サービスにログイン情報を渡したいと思います。私はそれをメッセージヘッダーに追加することを考えました。

今、私はデザインの実行可能性に疑念を抱いています。誰かに、このシナリオでどのようなバインディングとセキュリティを使用する必要があるか、ログイン情報を渡す方法、そして私のプレゼンテーションレイヤーでもっとも安全であるべきものについて、いくつかのヒントを教えてください。ファイアウォールを介して内部プロダクションサーバにどのポートを開くかを制御します。 DMZ内のWebサーバーでホストされるASP.Netクライアントは1つだけですが、本番サーバーへのHTTPSまたはHTTPアクセスのみが可能です。

どうもありがとう ライアン

おかげ

+0

「ログイン情報をサービスに渡したい」と言われたら、サービス層でそのユーザーの身元を知りたいのですか? – Dan

答えて

1

私はあなたのアプローチはOKに聞こえると思います。 WCFサービスがフロントエンドのasp.netアプリケーションでのみ使用される場合は、Windowsサービスでサービスレイヤーをホストし、TCPバインディングを使用すると考えられます(IISとおそらく証明書を扱う必要はありません) 。しかし、インフラストラクチャの要件を少し変更する必要があります(ポート80/443は使用できますが、IISが通常使用するポートの使用に関連する厄介な問題に直面します)。 IIS/HTTPバインディングから始めて、後で、アプリケーション全体(WCFの美しさ)への影響を最小限に抑えて後で切り替えることができます。

サービス自体については、2つのリポジトリの上に1つの簡単なファサードを公開することも検討します。そうすれば、あなたのクライアントはあなたのoracle dbとunixシステムのコンセプトには結合しません。しかし、この議論の余地はありますが、2つのシステムが別個のビジネスドメインを表していて、それらを別々に保っているのであれば、使用されているテクノロジだけを述べただけですそれらが2つの異なるシステムであるためにのみ分割している場合、それらのシステムをUIから抽象化しようとします。

資格情報を渡す場合は、クレームと組み合わせて認可ポリシーを使用することをおすすめします。このトピックの詳細については、既に見つからなければleastprivilege.comをチェックしてください。ここにはarticleがあります。

関連する問題