← inaro.devAI駆動開発 学習ツール

JWTとセッション

なぜ学ぶか: 認証のトピックで「ログイン状態はトークンで保持される」と学びました。そのトークンの正体がJWT。中身を知ると、「JWTに秘密情報を入れてはいけない」「有効期限が大事」といった、AIが見落としがちな注意点が理解できます。仕組みを知れば、認証コードのレビューが一段深くなります。

JWT=署名付きの身分証

「ユーザーID・有効期限+改ざん防止の署名」がセットになった文字列。サーバーはこれを見てログイン状態を確認します。

中身は「誰でも読める」

JWTは暗号化ではなく署名。中身は簡単にデコードして読めます。だから秘密情報(パスワード等)を入れてはいけません。

署名=改ざん検知

中身は読めても、書き換えると署名が合わなくなり無効になります。「読めるが偽造できない」のがJWTの肝です。

有効期限が安全の要

トークンが漏れても、期限が切れれば使えなくなります。期限が無い/長すぎるトークンは、漏れたときの被害が大きくなります。

図解

JWT の構造(. で3つに区切られている)

  eyJhbGc...  .  eyJzdWIi...  .  SflKxwRJ...
  └ヘッダー      └ペイロード       └署名
                  (中身)         (改ざん検知)

ペイロードをデコードすると… 誰でも中身が読める:
  {
    "sub": "user_123",          ← ユーザーID
    "exp": 1735689600,          ← 有効期限
    "email": "ada@example.com"
  }
  ※ ここにパスワードなどの秘密を入れてはいけない

「暗号化されている」と思い込んでJWTに秘密を入れるのが定番ミス。中身は誰でも読めます。JWTが守るのは『改ざんされていないこと』であって『中身の秘匿』ではありません。

ステップ 1 / 2

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。