Session
このドキュメントの目的
Spring Sessionを使ったセッション管理の実装を理解することが目標です。
所要時間
⏱️ 約20分
Spring Sessionとは
HTTPセッションをRedis等の外部ストアに保存する仕組み
な ぜSpring Sessionが必要か
| 項目 | デフォルト(インメモリ) | Spring Session(Redis) |
|---|---|---|
| 永続化 | ❌ サーバー再起動で消失 | ✅ Redis保存で永続化 |
| スケーラビリティ | ❌ スティッキーセッション必須 | ✅ 複数サーバーで共有可能 |
| HA構成 | ❌ サーバー障害で全セッション消失 | ✅ Redis冗長化で可用性向上 |
idp-serverの要件: マルチサーバー構成・高可用性 → Spring Session必須
idp-serverでのセッション利用箇所
1. OAuth認可フロー(Authorization Code Flow)
1. [ユーザー] /oauth/authorize にアクセス
↓
2. [idp-server] AuthorizationRequest保存
↓ HttpSessionに保存
3. [ユーザー] ログイン画面で認証
↓
4. [idp-server] HttpSessionから AuthorizationRequest取得
↓ セッション継続
5. [idp-server] Authorization Code発行
セッションがないと: 認証完了後にAuthorization Requestの情報が取得できない