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 で信頼済みサイトと通常のインターネット ゾーンの両方を「保護モード」に設定しました。それは私の問題を解決したようです。