JWTデコーダー

JWTを貼り付けると、デコードされたヘッダーとペイロード、そして有効期限などの標準クレームの説明が表示されます。何もアップロードされず、署名が検証されたり秘密鍵と照合されたりすることもありません。

ヘッダー


        

ペイロード


        

仕組み

JWTはドットで結合された3つのBase64URLセグメントです。ヘッダー、ペイロード、署名です。このツールはドットで分割し、最初の2つのセグメントをデコードします。URLセーフなアルファベットを標準のBase64に戻し(-+に、_/に)、JWTが省略しているパディングを復元し、atob()を実行し、TextDecoderでバイト列をUTF-8としてデコードします。各セグメントはその後JSON.parseされ、整形されて表示されます。標準クレーム(isssubaudexpnbfiatjti)にはわかりやすいラベルが付き、Unixタイムスタンプは読みやすい日付に変換され、expはあなたの時計と比較されてトークンが期限切れかどうかを教えてくれます。3番目のセグメントである署名は、一切解析されません。

これがこのツールが厳密に守っている区別です。デコードは検証ではありません。あらゆるJWTのペイロードは誰でも読むことができます。それは暗号化ではなくエンコードされているだけです。トークンが本物であることを証明するには署名を再計算する必要があり、そのためには署名用の秘密鍵(HMACの場合)または発行者の鍵(RSA/ECDSAの場合)が必要です。このツールは意図的に「秘密鍵を貼り付ける」ボックスを提供していません。本番環境の署名用秘密鍵をウェブページに貼り付ける習慣は、どんな利便性をもってしても正当化できないリスクであり、検証はいずれにせよサーバー側で行うべきものです。サーバー側で検証していないデコード済みのクレームを決して信用しないでください。

すべての処理は、atobとテキストデコードAPIを使ってこのページのJavaScript内で実行されます。DevToolsのNetworkタブを開いた状態で実際のトークンを貼り付けて観察してみてください。リクエストは一切発生せず、トークンがブラウザのタブから外に出ることはありません。