オンライン JWT デコーダー
JWT(JSON Web Token)はドットで区切られた 3 つの Base64URL 部分——ヘッダー・ペイロード・署名——から成ります。このJWT デコーダーは前の 2 つを読みやすい JSON に変換し、クレーム(sub・iss・exp など)や exp を人間可読の時刻で確認できます。認証のデバッグに便利です。すべてローカルでデコードします。
使い方
- 完全な JWT を入力欄に貼り付けます。
- デコードされたヘッダーとペイロードが下にリアルタイム表示されます。
- exp が切れていないか、クレームが正しいかを確認します。
重要な注意
- デコードのみで署名検証は行いません(検証には秘密鍵が必要で、オンラインツールに入れてはいけません)。
- ペイロードは誰でも読めます。機密を入れないこと。
- トークンはパスワード同然です。共有時は注意を。
デコードは中身を読むだけ。署名の検証ではない
ログイン不具合を調べるとき、一番手軽なのは JWT をここに貼り付けて、claims や発行者、そして exp(有効期限)を確認することです。「認証情報は合っているのに何度もログアウトされる」というケースの多くは、実はトークンがとっくに期限切れだった、というオチだったりします。ただ、二つの重要な点を押さえてください。まず、デコードは検証ではありません。ここでは中身を読み出すだけで署名が正しいかは確認しないので、きれいにデコードできてもそのトークンが信頼できるとは限りません。次に、payload は暗号化されていません。ただの Base64 なので、トークンを手にした人なら誰でも読めます。パスワードや鍵などの秘密情報を入れるのは絶対にやめましょう。
鍵なしでなぜ復号できる?
JWT は暗号化されていないからです。仕様書のサンプルトークンを鍵なしでこのページに貼ると、ヘッダーは { "alg": "HS256", "typ": "JWT" }、ペイロードは { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } として返りました。復号されたものはありません。暗号化されたものがないからです。最初の 2 セグメントは Base64url のテキストで、署名が守るのは改変からで閲覧からではありません。だから JWT には URL に入れたくないものを載せてはいけませんし、完全なトークンをバグ報告に貼るのは、期限切れまで使える資格情報を渡すことです。