2 つのトークンはシンプルなライフサイクルに従います: 短命な access token が各 API 呼び出しを認可し、長命な refresh token がそれらの失効時に静かに新しい access token を発行します — こうしてユーザーは認証情報を再入力せずにログイン状態を維持します。
フロー
scss
┌─────────┐ . login (user + pass) ┌────────────┐
│ Client │ ────────────────────────▶ │ Auth server│
│ │ ◀──── access + refresh ─── │ │
└─────────┘ └────────────┘
│ . API 呼び出し: Authorization: Bearer <access>
▼
┌────────────┐ 署名 + exp を検証 (DB ルックアップなし)
│ Resource │ ──── OK ────▶ (access はまだ有効)
│ API │ ──── ───────▶ (access は失効)
└────────────┘
│ . の場合: POST /token { refresh }
▼
┌────────────┐ 検証 + ローテーション
│ Auth server│ ──── 新しい access (+ 新しい refresh) ────▶ 呼び出しを再試行
└────────────┘
