2009-06-01 7 views
4

私は、他の "再販業者"のウェブサイトでIFRAMEを介してレポートページを利用できるようにするために、クライアント用のASP.NETウェブサイトを作成しています。 代理店のウェブサイトでは、異なるブランドの同じサービスが提供されています。 私はできる限り避ける必要があります。これを可能にするためにWebサーバーにコードを実装する必要があります。つまり、iframeを使用します。ASP.NETとiframeを使用してドメイン間でユーザーを認証する方法は?

ユーザーは、リセラーのWebサイトにログインし、iframeを含むページを読み込み、プライマリサイトでレポートをロードします。 パラメータとして、リセラーIDとそのユーザー名を送信します。

SSLサーバー証明書は使用できますが、クライアントのビジネス上の選択肢であるOpenIdなどのフェデレーションログインは使用できません。

問題は、リセラーからページをロードしたユーザーがレポートページを実際に要求していることをプライマリサイトがどのように確認するのかです。 つまり、ドメイン間でユーザーを認証するには、販売代理店にコードを実装する必要はありません。

どのようなご意見もありがとうございます。

答えて

2

私はリセラーサイト上の任意のコードを実行せずにこれを行うには満足のいく方法を参照してくださいません。

代わりに、代理店WebサーバーからプライマリWebサーバーにHTTPS要求を送信し、自分自身を識別する一意の秘密鍵とログオンしたユーザーのユーザー名を渡すように要求します。

このキーは、プライマリサイトで確認されると、再販業者の認証、およびログオンしたユーザーの延長として機能します。

このリクエストの応答には、htmlフラグメント文字列が含まれています。この文字列は、リセラーが任意のページに挿入できます。

このフラグメントには、ユーザー名を使用してプライマリサイトからログオンしたユーザーのレポートを直接ロードするiframeが含まれます。 このレポートコンテンツには、リセラー固有のスタイルシートへの参照が含まれています。

リセラーとそのユーザーの両方が認証されているため、HTTPS上でHTTPSが必須ではないと言います。そのプロセスがHTTPS経由で発生した場合、盗聴者はいないと見なすことができます。

秘密鍵またはユーザーのパスワードが漏洩した場合、ブラウザからのHTTPSは何の違いもありません。

0

私は何か不足している可能性がありますが、クライアントがサーバーに対して認証されている場合は、iframeを通して表示すると認証されます。

たとえば、gmailにiframeを使用してサーバー上にHTMLページを作成します。あなたのブラウザのGmailに認証されている限り、そのページにあなたの受信トレイが表示されます...

+0

返信いただきありがとうございます。答えでは、彼は第2のドメインに対してまだ認証されていない。ユーザーはドメインAにログインし、そこからドメインBのコンテンツを読み込むiframeを含むページを読み込みます。Aでサーバーに(HTML以外の)コードを実装せずにドメインBのユーザーを認証する方法は? –

+0

ウェブサイトにログインするときにユーザーが使用するのと同じメカニズムを使用します。例えばユーザーがログインしていない場合、ログインページが表示されます...(やはりgmailのように) –

4

あなたのログインフォームは、ログインフォームを隠しiframeに投稿することができます。クロスドメインセキュリティの問題のためにXMLHTTPRequestを使用します)。

iframeを元のドメインにリダイレクトすることを忘れないでください。ドメイン間のセキュリティが原因でiframeからログインステータスを取得できなくなります。

IEのサポートのための最終的なトリックは、邪悪ビットを反転して、HTTPレスポンスヘッダに

P3P: CP="CAO PSA OUR" 

を追加することです。ブラウザには「私は悪くない、正直なことはしません」と伝えます。

http://support.microsoft.com/kb/323752

http://www.w3.org/P3P/

+0

面白いです、感謝しています。 –

+0

申し訳ありませんが、再販業者のサイトはユーザーをサーバーにログオンし、2回目のログオンを避けたいと明確にしていませんでした。 リセラーがプライマリサイトに「レポートを表示したいボブ」と指示した場合、プライマリはユーザーBobをルックアップできます。リクエストが本当に認定リセラーから送られてきたことを確認できれば、レポートを送信します。役に立つ答え、私はあなたにポイントを与える:) –