とりあえず抱かれたい男 No.1 のおかげで ACSv2 を使った認証を実装できたわけですが、このままだとセッション中のみ有効なクッキーが発行されてしまっていやんな感じです。
クッキーは WIF のモジュールによって出力されてるので、MSDN で設定を探しまくったら [persistentCookiesOnPassiveRedirects] というプロパティを発見しました。名前からしていけそうな感じですね。
この設定は Web.config の federatedAuthentication 内にある wsFederation 要素に追加します。
<federatedAuthentication> <wsFederation passiveRedirectEnabled="true" persistentCookiesOnPassiveRedirects="true" issuer="https://****.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:****/" requireHttps="false" /> <cookieHandler requireSsl="false" /> </federatedAuthentication>
これでもう一度ログインをしてみると、以下のように期限が設定されたクッキーが発行されました。めでたしめでたし。
ちなみに、デフォルトでは 30 分しかクッキーが保持されないので、もっと期限を延ばしたい場合には wsFederation の下にある cookieHandler の persistentSessionLifetime を変更すればいいです。下の例では 1 時間にしています。
<cookieHandler requireSsl="false" persistentSessionLifetime="01:00:00" />
どうやらスキーマでは Integer になっているみたいですが、実際には TimeSpan なので [HH:MM:SS] 形式で指定しないとエラーになります。