Web技術の基礎
署名を付けた一般的なJWT(JSON Web Token)の説明として、正しいものはどれか。
- Aペイロードは署名の鍵で暗号化されているので、パスワードやクレジットカードの番号を入れて送っても、途中で読まれることはない
- B有効期限を過ぎたトークンでも、署名が正しければ改ざんはされていないので、サーバは受け付けなければならない
- Cヘッダ、ペイロード、署名をBase64URLで符号化して「.」でつないだもので、署名で改ざんを検出できるが、中身は暗号化されていない
答えと解説を見る
正解:C. ヘッダ、ペイロード、署名をBase64URLで符号化して「.」でつないだもので、署名で改ざんを検出できるが、中身は暗号化されていない
JWTは「ヘッダ.ペイロード.署名」の3つの部分からなり、ヘッダには署名の方式(例えばHS256)、ペイロードには利用者の識別子や有効期限(exp)などの情報(クレーム)が入ります。署名はヘッダとペイロードから秘密の鍵を使って作るので、受け取ったサーバは、中身が改ざんされていないことと発行元を確かめられます。ただし、Base64URLは暗号ではなく、だれでも元に戻して読めるので、秘密の情報は入れません。APIに送るときは、一般に Authorization: Bearer の後にトークンを付けて送ります。
- A. 署名を付けたJWTのペイロードは符号化されているだけで、だれでも読めます。秘密の情報は入れません。
- B. サーバは署名とともに有効期限(exp)も確かめ、期限を過ぎたトークンは受け付けません。
- C. 正しい。署名で改ざんを検出できますが、中身は暗号化されていません。