私は社内のSSOサーバーを使用して認証を行うWebアプリケーションを開発しています。私は私のホームページにLogout.aspxというページへのリンクを持っています。 Logout.aspxはForms認証Cookieとすべてのセッションデータを消去し、現在Login.aspxというページに設定されているフォーム認証構成で指定されたLoginUrlへのリダイレクトを実行します。複数のリダイレクトがある場合、ASP.NETの参照元URLを取得する方法は?
ただし、Login.aspxが読み込まれると、以前に発行されたSSO認証チケットを使用して、SSOサーバーに対してユーザーを暗黙的に再認証しようとします。このチケットがまだ存在する場合、前のユーザーはログインしてホームページに戻されます。ログインページが読み込まれたときに、ログアウトページからのリクエストかどうかを確認したいと思います。要求のUrlReferrerプロパティはHome.aspxを引き続き参照します。これは、クライアントが要求した最後のURLであったと考えられます。
現時点では、暗黙的なログインを実行せず、代わりにユーザーに資格情報の入力を求めるログアウトページからの要求にクエリ文字列変数を追加する回避策があります。要求がログアウトページからのリダイレクトを経由したものかどうかをプログラムで判断するにはどうすればよいですか?
編集29/04/2009:
jellomonkeyとの会話の後、私は、SSOサーバと消費のウェブサイトのローカルフォーム認証の間の相互作用は直接関連していないことを指摘すべきです手元の問題。簡潔に表現すると、私の問題は次のとおりです。
- ユーザーはLogout.aspxの
- Page_Loadイベントハンドラは、フォーム認証チケットとセッションデータをクリアしてにユーザーをリダイレクトLogout.aspxするためにそれらを取るHome.aspxからHTMLのハイパーリンクをクリックしますLogin.aspx
- Login.aspxのPage_Loadイベントは、要求オブジェクトのUrlReferrerプロパティをチェックして、要求がログアウトページから来たものかどうかを判断します。ただし、Logout.aspxからリダイレクトされたリクエストでは、RequestオブジェクトのUrlReferrerプロパティはHome.aspxです。
なぜですか?なぜUrlReferrer Home.aspxであり、Logout.aspxではないのですか?
どのようにリダイレクトしていますか?Response.RedirectまたはServer.Transferを使用していますか? – wweicker
Seanix - 私はResponse.Redirectを使用しています – pmarflee
UrlReferrerはクライアントマシンの前回の要求で、Resp onse.RedirectとServer.Transferを使用すると、Server.Transferが記述した方法で失敗し、Response.Redirectが機能すると推測できました。申し訳ありませんが、私は元の質問に答えることができませんが、私はいくつかの代替ソリューションを提供することができます... – wweicker