JWTデコード(中身・有効期限・署名の確認)
JWTを貼るだけで、ヘッダーとペイロードを読み、有効期限を日時で見せます。鍵を入れれば署名も確かめます。
JWT
0文字・0行
処理はこの端末の中で行われ、入れた文字はどこにも送られません。
JWTはログインの鍵と同じ働きをすることがあります。信頼できないほかのサイトには貼らないでください。
読んだ中身
ここに結果が出ます
役に立ったら、シェアしてもらえるとうれしいです
使い方
1. JWTを貼る
上の欄の「貼り付け」をタップすると、コピーしておいたJWTが入ります。「Bearer」付きや、前後の引用符はそのままでかまいません。試すだけなら「見本」をタップします。
左の欄の上の「貼り付け」を押すと、コピーしておいたJWTが入ります。「Bearer」付きや、前後の引用符はそのままでかまいません。試すだけなら「見本を入れる」を押します。
2. 中身を見る
下の「読んだ中身」に「期限内」「期限切れ」などの札が出て、その下に有効期限や発行日時が、この端末の日時と「◯年後」「◯時間前」で並びます。その下にヘッダーとペイロードのJSONが出るので、「ペイロードをコピー」をタップすると、整えたJSONをコピーします。
右の欄の上に「期限内」「期限切れ」などの札が出て、その下に有効期限や発行日時が、この端末の日時と「◯年後」「◯時間前」で並びます。その下にヘッダーとペイロードのJSONが出るので、「ペイロードをコピー」を押すと、整えたJSONをコピーします。
3. 署名を確かめる
いちばん下の「署名を確かめる」の欄に、HS256などなら秘密の鍵を、RS256・ES256などなら公開鍵を入れます。入れるとすぐに「署名は正しいです」か「署名が合いません」が出ます。見本のトークンの鍵は papatto-sample-secret です。
左下の「署名を確かめる」の欄に、HS256などなら秘密の鍵を、RS256・ES256などなら公開鍵を入れます。入れるとすぐに「署名は正しいです」か「署名が合いません」が出ます。見本のトークンの鍵は papatto-sample-secret です。
こんなときにおすすめ
ログインが急に切れる理由を調べたい
トークンを貼れば、有効期限(exp)と発行日時(iat)を、この端末の日時と「◯分前」で見せます。期限切れなら札ですぐ分かるので、時計のずれや期限の短すぎも見つけやすくなります。
Webエンジニア・サポートの担当者
トークンに何が入っているか確かめたい
ユーザー(sub)・発行者(iss)・受け取る相手(aud)や、権限などの独自のクレームを、整えたJSONで読めます。開発ツールからコピーした「Bearer」付きの文字も、そのまま貼れます。
APIを作る人・試す人
署名の鍵が合っているか確かめたい
HS256の秘密の鍵や、RS256・ES256の公開鍵(PEM・JWK)を入れると、その鍵で作られた署名かをすぐに確かめます。鍵の設定違いで認証が通らないときの切り分けに使えます。
認証まわりを作る開発者
本物のトークンを外に出したくない
読むのも確かめるのも、すべてこの端末のブラウザの中です。トークンや鍵がサーバーに送られることはないので、ほかの人のサーバーに認証の情報を渡さずに済みます。
セキュリティに気を付けたい人
使う前に知っておきたいこと
- JWTの中身は暗号ではなく、だれでも読めます。パスワードなど、見られて困るものは入れないでください。
- 暗号にしたJWT(JWE)は、中身を読めません。読めるのはヘッダーだけです。
- 公開鍵を自動で取りに行く機能(JWKSのURLから読む)はありません。鍵は自分で貼ってください(このページは外に通信しないためです)。
JWTについて
JWT(JSON Web Token)は、ログインした人の情報や権限を、「ヘッダー.ペイロード.署名」の3つの部分で表した文字です。ヘッダーとペイロードは、JSONを {tool:base64} のURLセーフの形にしただけなので、だれでも元に戻して読めます。改ざんを防いでいるのは、最後の署名です。
このツールは、ペイロードの exp(有効期限)・nbf(使える開始日時)・iat(発行日時)を、この端末のタイムゾーンの日時と「◯時間後」のような言葉で出し、期限が切れていれば札で知らせます。数だけの日時は {tool:unix-time} でも変換できます。鍵を入れれば、HS256・RS256・PS256・ES256・EdDSA などの署名が正しいかも、ブラウザの中だけで確かめます。
よくある質問
使う前に気になりやすいことをまとめました。
貼ったJWTはどこかに送られますか?
送られません。読むのも署名を確かめるのも、お使いの端末のブラウザの中だけで行い、JWTも鍵もサーバーに送りません。JWTはログインの鍵と同じ働きをすることがあるので、中身の分からないほかのサイトには貼らないようにしてください。
有効期限(exp)はどう見ればいいですか?
「読んだ中身」の上の札で、「期限内」「期限切れ」「まだ使えません」「期限なし」が分かります。下の一覧には、有効期限の日時をこの端末のタイムゾーンで出し、「3時間後」「2日前」のように今からの時間も添えます。
署名は確かめられますか?
確かめられます。HS256・HS384・HS512は秘密の鍵(文字かBase64)を、RS256・PS256・ES256・EdDSAなどは公開鍵を入れると、すぐに「署名は正しいです」か「署名が合いません」が出ます。
どんな形の公開鍵を使えますか?
「-----BEGIN PUBLIC KEY-----」で始まるPEM、「-----BEGIN RSA PUBLIC KEY-----」、証明書(-----BEGIN CERTIFICATE-----)、JWK、JWK Set({"keys": […]})を読めます。JWK Set のときは、ヘッダーの kid と同じ鍵を選びます。
「Bearer」が付いたままでも読めますか?
読めます。「Authorization: Bearer」付きの行や、前後の空白・改行・引用符は、自動で外してから読みます。
「署名のないJWTです(alg: none)」と出ました
署名がなく、だれでも中身を書き換えられるトークンです。テスト用でなければ、サーバーの設定を見直してください。ログインなどに使うサーバーは、alg が none のJWTを受け付けてはいけません。
「暗号にしたJWT(JWE)です」と出ました
「.」で5つに分かれたJWTは、中身を暗号にしたJWEです。受け取る側の秘密鍵がないと読めないため、このツールではヘッダー(暗号の方式など)だけを見せます。
「JWTとして読めません」と出ます
コピーしたときに一部が欠けているか、JWTに使えない文字が入っています。どの部分が読めないかを出し、貼った欄のその場所にオレンジの印を付けるので、そこを確かめてください。
JWTの中身は暗号ですか?
暗号ではありません。ヘッダーとペイロードは、決まった表で文字に置き換えただけ(base64url)なので、だれでも読めます。パスワードや個人の情報は入れないでください。
無料で使えますか?
無料です。登録も不要で、広告もありません。
ほかのツール
- 全角・半角を変換
英数字やカタカナの全角と半角を、まとめて変換します。
- ひらがな⇔カタカナ変換
ひらがな・カタカナ・半角カナを、まとめて変換します。漢字や英数字はそのまま残します。
- SNSの文字数チェック(X・Instagram・YouTube)
X・Instagram・YouTubeなどの上限まであと何文字かを、SNSごとの数え方で数えます。文字数・行数・原稿用紙の枚数も。
- JSON整形
JSONを読みやすく整えたり、1行に詰めたりします。間違いがあれば場所を示します。
- URLエンコード・デコード
日本語や記号をURLで使える形(%E3%81%82など)にエンコードしたり、元の文字に戻したりします。
- パスワード生成
長さと使う文字を選んで、推測されにくいパスワードをその場で作ります。