JWTデコード
JWTのヘッダー・ペイロードと有効期限を展開し、鍵を入れれば署名も検証します。入力内容はサーバーに送信しません。
ツールを準備しています。
ユーザーの評価
まだレビューはありません。このツールを使ったことがあれば、最初のレビューを書いてください。
JWTデコードの詳しい使い方ガイド
使い方と例を確認し、知りたいことはトピックから探せます。
はじめに確認すること
- 扱うもの
- ドットで区切られた3つの部分からなるトークン(JWS)のヘッダーと内容。
- 署名の確認
- 秘密鍵(HS)または公開鍵(RS・PS・ES・EdDSA、PEM・JWK)を入れると、ブラウザの中で確認します。
- 時刻の表示
- exp・iat・nbfを、人が読める日付に変換して表示します。
- 有効の判断
- 現在の時刻と比べて、期限切れ・有効・開始前を区別します。
- 項目名
- 発行者・対象者のような既知の項目に、分かりやすい名前を付けます。
- 危険の警告
- 署名方式がnoneの場合は、別に警告します。
- 扱わないもの
- 5つの部分からなる暗号化トークン(JWE)。
- 処理する場所
- トークンをサーバーに送らず、このブラウザの中だけで読み取ります。
JWTデコードの使い方
トークンを貼り付ける
eyJで始まる文字列をそのまま入れてください。Bearerの接頭辞が付いていても、自動で取り除きます。「例を入れる」で、形を先に見ることもできます。
有効期間を確認する
一番上に、署名方式と有効期間が表示されます。期限切れなら、どれくらい経ったか、まだなら、いつ終わるかをお知らせします。時間が経ったあとは、現在の時刻で再表示するボタンを押してください。
内容を見る
トークンが持つ値を、表で表示します。時刻の項目には日付も添えてあり、元のJSONも下にそのまま表示されるので、コピーできます。
鍵を入れて署名を確認する
署名確認の欄に、HSのトークンなら秘密鍵を、RS・PS・ESのトークンなら公開鍵を入れると、署名が合っているかをすぐにお知らせします。秘密鍵がbase64で書かれている場合は、その選択肢をオンにしてください。鍵は保存しません。
こんな作業に使えます
有効期限を、人が読める日付に
JWTのexp・iat・nbfは、1970年からの経過秒数で書かれているため、そのままでは読みにくい値です。このツールは、その値を日付と時刻に変換し、現在の時刻と比べて、すでに期限切れか、まだ有効か、あと何分で終わるかまで教えます。発行者・対象者のような既知の項目には分かりやすい名前を付けるので、初めて見るトークンでも把握しやすくなります。
鍵を入れたときだけ署名を確認します
トークンが本物かを確認するには、発行者の秘密鍵または公開鍵が必要です。HS256・384・512は秘密鍵の文字列を、RS・PS・ES・EdDSAは公開鍵をPEMまたはJWKで入れると、ブラウザに入っているWebCryptoで署名が合っているかを教えます。鍵は確認にだけ使い、保存も送信もしません。秘密鍵(プライベートキー)や証明書を入れた場合は、確認せずにお知らせし、HSのトークンに公開鍵を入れるアルゴリズム混同の形も拒否します。署名方式がnoneのトークンには、はっきり警告を出します。
例で結果を確かめる
期限切れのトークン
expが過ぎたトークン有効期間:期限切れ
すでに期限切れのトークンです。3時間前に期限切れになりました。署名方式がnoneのトークン
algがnoneのトークン署名方式がnoneです。署名がないため、誰でも内容を書き換えられるトークンです。このツールができること、できないこと
表を左右にスクロールすると続きが見られます。
| 項目 | ここで | 理由 |
|---|---|---|
| 内容を読む | できます | トークンは、誰でも解読できるようになっています。 |
| 有効期限の確認 | できます | expの値と現在の時刻があれば足ります。 |
| 署名の確認 | 鍵を入れればできます | 鍵は確認にだけ使い、保存も送信もしません。秘密鍵(プライベートキー)は受け付けません。 |
| トークンの作成 | できません | 署名するには鍵が必要です。 |
結果が思ったとおりにならないとき
3つの部分ではないと表示されます
コピーするときに、一部が抜けた可能性があります。ドット(.)が2つあるか、前後が切れていないかを確認してください。
JSONではないと表示されます
JWTではない別の文字列かもしれません。base64でエンコードされただけの値は、JWTではありません。その場合は、Base64変換ツールを使ってみてください。
有効期限がないと表示されます
expが入っていないトークンです。期限がない場合も、サーバーが別に管理している場合もあるため、このトークンだけでは判断しません。
韓国語の文字が文字化けして見えます
文字化けはしません。UTF-8で読み取るので、名前のような韓国語の値もそのまま表示されます。違って見える場合は、トークン自体が別の方式でエンコードされています。
知っておきたい用語
- JWT
- ヘッダー・内容・署名をドットでつないだトークンです。ログイン状態を持たせるのによく使われます。
- payload
- トークンが持っている値です。誰でも解読できるので、秘密は入れません。
- exp
- 有効期限の時刻です。1970年からの経過秒数で書きます。
- alg
- 署名に使った方式です。noneは署名がないという意味です。
JWTデコードのよくある質問
トークンはサーバーに送信されますか?
送信されません。読み込みと解読は、すべてこのブラウザの中で行われます。ただし、実際に使われているトークンにはログイン情報が入っているので、他人のパソコンでは、確認したあとに入力欄を空にしてください。
署名が正しいか確認してくれますか?
鍵を入れると確認します。HS方式は秘密鍵を、RS・PS・ES・EdDSA方式は公開鍵(PEMまたはJWK)を入れてください。鍵を入れない場合は、内容を解読して見せるだけで、本物かどうかは判断しません。本番で使っている秘密鍵はなるべく入れず、テスト用の鍵を使ってください。
暗号化されたトークンにも対応していますか?
対応していません。5つの部分からなるJWEは、内容が暗号化されているため、鍵なしでは読めません。そのようなトークンを入れると、JWEであることをお知らせします。
トークンにパスワードが入っていますか?
入っていてはいけません。内容は誰でも解読できるので、暗号ではありません。このツールで確認して機密の値が見えた場合は、それ自体が問題です。
期限切れなのに、まだログインしたままです
サーバーがトークンを新しく発行したか、別の方式で状態を保っている場合です。このツールは、入力したトークン1つだけを見て判断します。
他人のトークンを入れてもいいですか?
技術的には読めますが、他の人のログイン情報を扱うことになります。ご自身のトークンか、テスト用のトークンだけで使ってください。