REST APIにおけるJWT認証

JWTとは?

JWTは「自己完結型の署名付きトークン」であり、サーバーがリクエストごとにセッションデータベースにアクセスすることなく認証を検証できます。

  • クライアントは Authorization: Bearer <access_token> を付けてAPIを呼び出します
  • サーバーはJWTの署名を検証し、有効期限を確認します
  • 有効であればリクエストが認可されます

REST APIの実装

以下のエンドポイントにメソッドを追加します。 注:アクセストークンはステートレスに検証されます。サーバー側の状態管理が必要なのはリフレッシュトークンのみです。

/sessions

  • POST — end_user_idpassword を使ってアクセストークンとリフレッシュトークンを発行します
  • DELETE — リフレッシュトークンを無効化します

/sessions/refresh

  • POST — 有効なリフレッシュトークンを使ってアクセストークンを再発行します
アクセストークンリフレッシュトークン
目的APIアクセスATの再発行
有効期限短い(例:5〜15分)長い(例:数日〜数週間)
保存場所メモリまたはHTTP-Only Cookieを推奨HTTP-Only Cookieを推奨
サーバー状態ステートレス(署名検証のみ)DBで管理(失効処理のため)

フローチャート

ATが有効かどうかを判定するには、以下を確認します:

  • 署名の検証
  • 有効期限(exp)クレーム