ADFS と統合された MVC アプリケーションを使用しています。
概要
ADFS 認証を呼び出す前にセッションを設定しています。ADFS呼び出しが戻った後、以前に設定したセッションが失われました。
詳細な説明
ステップ 1 アプリケーション URL の呼び出し
https://hrcentral/mainmodule/expense/index
ステップ2上記の呼び出しは、アプリケーションのhttphandlerであるWIFコンポーネントにリクエストをリダイレクトするため、URL:https://hrcentral/federationMetaData/wif.axd ?ReturnUrl= https://hrcentral/mainmodule/expense/index
Web.configリダイレクト用に以下のように設定しています
<authentication mode="Forms">
<forms loginUrl="~/FederationMetadata/WIF.axd" name="smartForms" />
</authentication>
ステップ 3: WIF.axd httphandler 内でセッションを設定し、クエリ文字列から URL を返す
HttpContext.Current.Session["ReturnUrl"]="https://hrcentral/mainmodule/expense/index";
セッションを設定すると、ADFS にリダイレクトされます
ステップ 4 ADFS 認証と POST リクエスト https://hrcentral/federationMetaData/wif.axd は、同じ WIF ハンドラ内で送信されます。リクエストが POST であるかどうかを確認する条件があります。このリクエストは POST であるため、ReturnUrl を含む以前に保存されたセッションは、リダイレクトしてアプリケーションに到達しようとします。
問題は、手順 3 で設定されたセッション (HttpContext.Current.Session["ReturnUrl"]=ReturnUrl) が、wif.axd で ADFS からリダイレクトされた後にアクセスできないことです。一般に、アプリケーションで設定されているすべてのセッションは、ADFS からのリダイレクト後に失われます。
その後、認証が行われ、https://hrcentral/mainmodule/expense/indexにリダイレクトされます
セッションの設定