0

new.somecompany.com と legacy.somecompany.com という 2 つの ASP.NET Web サイトがあります。

「新規」は、Windows 認証を使用するイントラネット アプリケーションです。「レガシー」はインターネットとイントラネットの両方です。フォーム認証を使用します。

私の上司は、「新しい」Web サイト内から、リンクをクリックして、「レガシー」サイトの既にログインしている Web ページへのブラウザ ウィンドウを開くことができるようにしたいと考えています。(彼は、レガシー サイトを変更せずにこれを行うことを望んでいます。)

Chrome (バージョン 39.0.2171.95 m) と Firefox (バージョン 33.1.1) の両方で動作するソリューションがありますが、Internet Explorer (バージョン 11.0.9600.17501) では動作しません。大まかな解決策は次のとおりです。

  1. 「新規」のコントローラーは、HttpWebRequest を使用して、保存された資格情報を使用して「レガシー」にログインします。
  2. コントローラーは、「レガシー」応答から「ASP.Net_SessionId」Cookie を取得し、それを使用してブラウザーでドメイン「.somecompany.com」の「ASP.Net_SessionId」Cookie を設定します。
  3. ブラウザから、 に移動しhttps://legacy.somecompany.com/somepage.aspxます。

Chrome および Firefox では、https://legacy.somecompany.com/somepage.aspxログインに使用された保存済み資格情報に応じて が表示されます。IE11ではログインページが表示されます。

Microsoft の Message Analyzer ツールを使用して、何がやり取りされているかを確認しました。Chrome では、ASP.Net_SessionId Cookie が somepage.aspx の HTTP 要求で送信されていることがわかります。IE 11 では、Cookie が送信されず、ログイン ページへのリダイレクトが応答として返されます。

これを IE 11 で動作させるためにできることはありますか?

4

2 に答える 2

0

私も似たような状況でした。ごく最近、一度コーディングして Windows 認証および匿名サイトに (iFrame で) デプロイしたい Web アプリケーションを開発しました。

ユーザーは、Active Director によってログインするか、外部サイトにログインする必要があります。

これが私がそれを処理した方法です。どちらの場合も、iFrame サイトは同じドメイン (表示されているように) site1.company.com または site2.company.com で実行されます。

これが私がそれを処理した方法です。

  1. サイト A: ユーザーがログインし、ユーザー名を暗号化して Cookie に保存します。(秘密鍵でAES暗号化を使用しました)。

  2. サイト B: Cookie を読み取り、ユーザー ID を復号化し、ユーザーをサイトにログインさせます。

Cookie には暗号化された値 (日時) もあり、その値は 3 秒間の有効期限がチェックされます。

于 2015-01-13T21:17:51.950 に答える
0

このブログが答えを教えてくれました。特に、この段落:

問題 #3 は Windows Vista 以降で、1 つのサブドメインを保護モード外で実行するように構成し (たとえば、信頼ゾーンに配置)、別の関連サブドメインを保護モード内で実行するように構成した場合 (たとえば、インターネット ゾーンに残したまま) に発生します。 . これはあまり一般的ではありませんが、たとえば、login.live.com をトラスト ゾーンに配置し、mail.live.com をトラスト ゾーンに配置しなかった場合に発生する可能性があります。このあいまいな問題の根本的な原因は、保護モードと非保護モードが Cookie を共有しないため、保護モード外のサイトによって設定された Cookie は、保護モード内で実行されているサイトには表示されず、その逆も同様です。

私の場合、「new.somecompany.com」は IE の設定でローカル イントラネット ゾーンにありましたが、「legacy.somecompany.com」はそうではありませんでした。「legacy.somecompany.com」をイントラネット ゾーンに追加した後、私のコードは IE 11 で動作しました。

于 2015-01-13T23:08:49.950 に答える