サーバーが発行した JWT(ドット区切りの3パーツ):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMDAxIiwibmFtZSI6IueUsOS4rSDlpKrpg44iLCJyb2xlIjoidXNlciIsImlhdCI6MTc5MjQyNjExNywiZXhwIjoxNzkyNDI5NzE3fQ.9jkacBdkcsYjT9DzxvN0j3Nm7SFWMSSd-sVywdlnFsI
■ヘッダー ■ペイロード ■署名
ヘッダー(Base64URLをデコードしただけ):
{
"alg": "HS256",
"typ": "JWT"
}
ペイロード(Base64URLをデコードしただけ):
{
"sub": "user001",
"name": "田中 太郎",
"role": "user",
"iat": 1792426117,
"exp": 1792429717
}
重要: ペイロードは 暗号化されていない。Base64URL エンコードされているだけで、 鍵がなくても誰でもデコードして中身を読める。→ パスワードやクレジットカード番号などの 機密情報は絶対に入れてはいけない。
署名は「ヘッダー+ペイロード」をサーバーの秘密鍵で計算したもの。改ざんすると署名が合わなくなる =改ざん検知はできるが、中身を隠す仕組みではない。
自分でも jwt.io のようなツールで 上のトークンを貼り付けるとデコードできる(=誰でも読める、の証拠)。