しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Passive Federation で永続的なクッキーを有効にする

とりあえず抱かれたい男 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] 形式で指定しないとエラーになります。