2012-03-09 3 views
1

1つのASP.NET(WebForms)アプリケーションから別のASP.NET(WebForms)アプリケーションにデータを転送する場合、の編集:最初のアプリケーションが2番目のアプリケーションにリダイレクトされます。 2つのアプリケーションは負荷分散された環境で動作するため、必ずしも同じサーバーマシンで実行する必要はありません。我々は、数百から数千バイトのサイズ範囲のXMLブロブについて言及しています。そのため、URLクエリー文字列にエンコードしてタックするのには少し時間がかかります。また、ユーザーはこのデータを盗み見ることができないようにする必要があります(現時点ではセキュリティ上重要ではありませんが、ユーザーに公開することは悪い考えです)。URLではなく、ASP.NETアプリケーション間でデータを転送しますか?

どのようにすればいいですか?

答えて

0

すべての方に感謝しました。これをオフィスの他の人々と話すにあたり、最終的にはデータが実際には別のWebアプリケーションで利用可能になっているので、データを利用するアプリケーションは両方とも、データを取得します。そのアプローチの欠点は、その呼び出しを2回行うのに要する時間が短いことです。これは、2つのアプリケーションが常に最新のデータを保持することを仮想的に保証し、純粋な実装であっても、エンドユーザーがデータを使用して何かを行うことを非常に困難にする点です。

0

暗号化されたクッキーに格納します。各リクエスト/レスポンスには1Kbしか追加しません。

+0

OPには、「このデータでユーザーはこのデータに悩まされてはいけません。クッキーに固定すると、Firebugなどを使用してデータにアクセスできます。 – mdm

0

クロスサイトリクエストを使用するとかなり簡単になります。

最初のアプリケーションは、Actionパラメータを持つフォームを含むページを返すだけで、他のアプリケーションのURLを指すようにしてください。ページには、ページが読み込まれるとすぐにフォームをポストバックするための小さなjavascriptも含まれている必要があります。ページの本文には、サーバー間で渡すデータが含まれています。

この方法では、クライアントのブラウザを使用してジョブを実行します。ページの本文はuri/cookieよりもずっと長くなる可能性があるので、この方法が有効です。

これは完全に正当なものであり、少なくともいくつかの受動的な認証プロトコルはそのような可能性に依存していることに注意してください。

編集:データの整合性は暗号化によって達成されます。データに署名(最も単純なアプローチ)または暗号化+署名(ユーザーがデータを変更するのを妨げるだけでなく、コンテンツを見ることもできない)。

クライアントブラウザを使用する必要がない場合は、任意の通信プロトコルを使用して、サーバー間で直接データを渡すことができます(TCP、HTTP)。

+0

悪意のあるユーザーがブラウザにデータを送信した場合、どのようにデータが表示されないようにしますか? – mdm

+0

暗号化することもできますし、受信者側で検証するために署名することもできます。 –

1

あなたの状況の詳細がわかりませんが、これを行う方法はいくつかあります。

  1. XML blobを1つのサイトからデータベースに挿入し、別のサイトからデータベースから取得できます。

  2. あるアプリケーションから別のアプリケーションの受信者ページにXML blobを送信して、要求からXMLを読み取ることができます。

  3. 第2のアプリケーションでは、fistアプリケーションからXMLブロブを受け取るメソッドを使用してWebサービスを作成できます。

  4. XMLを1つのアプリケーションにファイルに書き込んで、2番目のアプリケーションでファイルから読み取ることができます。私の頭の上からだけで簡単にアイデア...

+0

ロードバランシングと使用方法(競合状態が高すぎるため)#4は間違いなく外れています。 –

2

データは、現在のユーザーのセッションに完全に固有のものであり、2つのサイトが同じドメイン上で実行している場合。

  1. クライアント用の鍵を生成します - から生成されたキーを持つmd5(some guid + some header from the user's browser)

  2. ストアのキーと値のストア/データベーステーブル内の情報、のようなインスタンス何かのために、合理的に一意であることが起こっている何かを1をキーとする。

  3. キーをクライアントにクッキーとして設定します。

このようにして、クライアントにデータを送信することを避けることができます。「キー」は、推測するのが非常に難しいほど十分にランダムでなければなりません。ハッシュを生成する/ saltを生成するために使用するヘッダーとGUIDも保存すると、要求で送信されたヘッダーに対してユーザーのCookieからキーを検証し、すべての詳細が一致しない場合はアクセスを拒否できます。これには、サーバ側で現実的に対処できるほどのデータを格納できるという利点もあります。

0

SSOのようなものかもしれません。データベースで

、それらの列を持つテーブル:
のGUID(Guid.NewGuid()
コンテンツ

(多分セキュリティログのユーザーID ...のような他のカラム)

最初のwebapp URLを通じてGuidを送信します。 2番目はデータベース内のコンテンツを取得します。

データを検証するために日付を使用すると、X秒以内にコンテンツにしかアクセスできません。

関連する問題