4

OpenId を ASP.NET MVC アプリケーションに統合するために、DotNetOpenAuth MVC 証明書利用者のサンプル コード (表面的な変更を加えたもの) を使用しています。

次の状況を除いて、コードはうまく機能します。証明書利用者 (私のアプリ) が IE の信頼できるサイトであり、ホスト マシン以外の場所からそのサイトにアクセスすると、OpenId プロバイダーへのリダイレクトがハングします。

具体的には、コードはコントローラー メソッドがプロバイダーにリダイレクトする ActionResult を返すポイントに到達し、IE はそこに座って循環します。

stackoverflow 自体をテストしたところ、問題なく動作したため、証明書利用者が信頼できるサイトであっても、MVC で OpenId 認証をサポートできることはわかっています。

Fiddler を使用してトラフィックを確認しましたが、アプリケーションが信頼できるサイトである場合、プロバイダーに要求が送信されることはありません。

何か案は?

問題のサンプル DotNetOpenAuth コードの行は次のとおりです。

return openid.CreateRequest(Request.Form["openid_identifier"]).RedirectingResponse.AsActionResult();

更新 #1 Fiddler では、呼び出しているコントローラー アクションがリダイレクトの場所ヘッダーを含む 302 応答を返すことがわかりますが、その後は何も起こりません。stackoverflow.com と nerdbank.org で再テストしたところ、これら 2 つのサイトでまったく同じ失敗動作が見られました。両方を信頼済みサイトとして追加し、IE から完全に閉じた後、これらのサイトに戻ったときに正常にログインできませんでした。

Windows 7 で IE 8 を実行しています。役立つ場合は、完全な Fiddler ログを提供できます。

また、さまざまな場所で、サイトが「信頼されている」場合、IE は信頼されていないドメインへのリダイレクトをブロックするという言及を見てきました。

アップデート #2

Open ID プロバイダーを信頼済みサイトに追加したところ、リダイレクトが発生するようになり、ログイン プロセスが機能するようになりました。したがって、これは実際にはユーザー エージェント (IE) の問題のようです。

アップデート #3

このリンクを見つけました:リンク テキスト

同様の問題を説明しているようです。提案された解決策に従い、IE で信頼済みサイトと通常のインターネット ゾーンの両方を「保護モード」に設定しました。それは私の問題を解決したようです。

4

1 に答える 1

2

信頼済みサイトは厳密には IE の機能であり、RP での実行には影響しません。したがって、RP がユーザー エージェントにリダイレクトする命令を送信していると思われます。Fiddler はこれを確認または反論できます。信頼されたサイトから信頼されていないサイトへのリダイレクトを中断する「機能」が IE にある場合、RP がそれについてできることは何もありません。

ちなみに、StackOverflow は DotNetOpenId (DotNetOpenAuth の前身) を使用するため、それが機能しているという事実は、おそらく修正するために制御できる構成に何か違いがあることを示唆しています。

更新: Win7 RC には IE8 のバグがあり、Win7 RTM には修正が含まれています。RC を実行している場合は、RTM が利用可能になるまでしばらくお待ちください。このシナリオは、他の RTM Windows オペレーティング システムおよび IE ブラウザでも再試行できます。

于 2009-08-25T03:18:43.263 に答える