plan-4ging

2026/04/13

Refresh Token とは

有効期限が切れた Access Token を再発行するための長期間有効なトークン

なぜ必要か

Access Token だけの場合

  • Access Token の有効期限を長くする
    • トークンが漏洩した場合に長期間悪用される(セキュリティリスク)
  • Access Token の有効期限を短くする
    • ユーザーが頻繁にログインし直す必要がある(UX 低下)

Refresh Token を活用すると「セキュリティと UX を両立」できる

  • Access Token:短い有効期限 → 漏洩リスクを最小化
  • Refresh Token:長い有効期限 → ログインし直しを回避

Access Token と Refresh Token の役割の違い

Access TokenRefresh Token
用途API へのアクセス認可Access Token の再発行
有効期限短い長い
送信先毎回の API リクエストToken エンドポイントのみ
漏洩リスク高い(頻繁に送信)低い(送信機会が少ない)
保存場所メモリまたは CookieHttpOnly Cookie

フロー

初回ログインから API 利用まで

① ユーザーがログインする
   クライアント → POST /auth/login { email, password }
   サーバー    → Access Token(15分)+ Refresh Token(30日)を返す

② Access Token で API を呼ぶ
   クライアント → GET /api/users
                  Authorization: Bearer <access_token>
   サーバー    → 200 OK(正常レスポンス)

③ Access Token の有効期限が切れる
   クライアント → GET /api/users
                  Authorization: Bearer <expired_access_token>
   サーバー    → 401 Unauthorized

④ Refresh Token で Access Token を再発行する
   クライアント → POST /auth/refresh
                  { refresh_token: <refresh_token> }
   サーバー    → 新しい Access Token(+ 新しい Refresh Token)を返す

⑤ 新しい Access Token で API を呼ぶ
   クライアント → GET /api/users
                  Authorization: Bearer <new_access_token>
   サーバー    → 200 OK

⑥ Refresh Token も期限切れ
  → ログインし直し

種類

ステートフル方式(DB 管理)

Refresh Token の情報を DB に保存して検証する

メリット

  • 任意のタイミングで即時無効化できる(ログアウト・強制失効)
  • 発行済みトークンの一覧を管理・確認できる
  • デバイスごとに管理できる

デメリット

  • リフレッシュのたびに DB アクセスが発生する

ステートレス方式(JWT)

Refresh Token 自体を JWT にして DB を使わずに検証する

メリット

  • DB アクセスが不要・スケールしやすい

デメリット

  • 即時無効化ができない(有効期限まで使われ続ける)
  • ブラックリストを使う場合は結局 DB が必要

保存場所

  • JavaScript から読み取れない(XSS 対策)
  • Secure属性で HTTPS のみ送信
  • SameSite=Strictで CSRF 対策
  • ブラウザが自動で送信するためクライアントの実装が不要

ローテーション

Refresh Token を使うたびに新しいトークンを発行して古いトークンを失効させる
攻撃者が盗んでいた token を使おうとするが、対象 token すでに失効しているため、サーバーが不正アクセスとして検知できる
→ (検知後)盗まれた側のユーザーの全 Refresh Token を失効させ、ユーザーにアラートを送ることなど

デバイスごとのセッション管理

ログイン時にデバイス情報を保存しておくことで、複数デバイスに対応したセッション管理を実現する
ユーザーが自分のセッション一覧を確認・個別ログアウトできるようにするなど


参考