Play Framework を始めたばかりの方向けに、サンプルを進めるうえで困ったところを共有する目的で書いています。
Play Framework 2.8.x 、および play-pac4j v5.1 を使って、Cookie によるセッション管理をした時のメモです、
以下、目次
前提
- 自前でパスワード等の管理はしたくない
- かといって Firebase Authentication 等は使わない(使えない、自由度がほしい等)
- stateless なセッション管理をしたい
参考にしたところ
- [play-pac4j の Wiki] (https://github.com/pac4j/play-pac4j/wiki/Security-configuration#2-choose-the-right-sessionstore)
- SPAセキュリティ入門~PHP Conference Japan 2021 (cookie にセッション情報は大丈夫なのか)
実装してみて
- play-pac4j の PlayCookieSessionStore を使えば、そのまま使える
- pac4j の OidcProfile は、id token で帰ってきたユーザー情報をすべて持っており、PlayCookieSessionStore の clearUserProfiles で、セキュリティ上問題になりそうな情報 (id token, access token, refresh token) は消去して cookie に登録しているっぽい
- cookie で不必要なユーザー情報を送りたくないので、clearUserProfiles を override して不必要な情報を消去した
以上でした。