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が生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。