-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
背景
現在(ADR 014)は JWT を httpOnly Cookie に格納するステートレス方式を採用。
MVP としては十分だが、以下のリスクが残る。
- ログアウト後もサーバー側で JWT を即時失効できない(有効期限まで有効)
- トークン盗取時に有効期限内は悪用可能
方針
JWT をやめて セッション ID(Opaque Token)方式に移行する
実装内容
- sessions テーブル追加(session_id: str PK, user_id: FK, expires_at, created_at)
- Alembic マイグレーション追加
- crud/session.py 追加(create / get / delete)
- auth.py のコールバックを JWT 発行 セッション ID 発行に変更
- dependencies/auth.py を Cookie のセッション ID DB 照合に変更
- GET /auth/logout でセッション DB レコードを削除(即時失効)
- PyJWT 依存を pyproject.toml から削除
- ADR 014 更新
現状 vs 移行後
| JWT(現状) | セッション ID(本 Issue) | |
|---|---|---|
| 即時失効 | x | o |
| 追加インフラ | なし | sessions テーブル |
| PyJWT | 必要 | 不要 |
関連
- ADR 014: 認証セッション管理方針
- feat: GitHub OAuth認証フロー実装(login・callback・ユーザー作成) #59: GitHub OAuth 認証フロー実装
Reactions are currently unavailable