JWTトークンを簡単デコード|無料JWTデコーダーのご紹介
- Webサービス
- Web制作/システム開発
WebアプリケーションやAPI開発では、認証・認可の仕組みとしてJWTを扱う場面があります。
ログイン後のアクセストークン、API認証、外部サービス連携、OAuth / OpenID Connect関連の実装などで、JWT形式のトークンが使われることがあります。
JWTはコンパクトで扱いやすい一方、トークンの中身をそのまま見ても内容を把握しづらく、ヘッダー、ペイロード、署名を分解して確認する必要があります。
そこでメディアソート株式会社では、JWTトークンをブラウザ上で簡単にデコードできる無料ツール「JWTデコーダー」を公開しています。
JWTとは
JWTは、JSON Web Tokenの略です。
認証情報やユーザー情報などのクレームを、コンパクトなトークン形式でやり取りするために使われます。
JWTは主に、ヘッダー、ペイロード、署名の3つの部分で構成されています。
それぞれの要素がBase64URLエンコードされ、ドットで連結された形式になっています。
一般的には、次のような形式です。
xxxxx.yyyyy.zzzzz
1つ目がヘッダー、2つ目がペイロード、3つ目が署名です。
JWTデコーダーとは
JWTデコーダーは、JWTトークンを入力するだけで、ヘッダー、ペイロード、署名を分解して表示できる無料Webツールです。
トークンを貼り付けると、内容がリアルタイムでデコードされ、JSONとして確認できます。
また、標準クレームの日本語解説、有効期限チェック、署名検証にも対応しています。
API開発、認証処理のデバッグ、外部サービス連携、ログ調査、トークンの内容確認などに便利です。
ヘッダー・ペイロード・署名を可視化
JWTは、ヘッダー、ペイロード、署名の3つに分かれています。
ヘッダーには、トークンの種類や署名アルゴリズムなどの情報が含まれます。
ペイロードには、ユーザーID、発行者、有効期限、発行日時、権限情報など、トークンで扱うクレームが含まれます。
署名は、トークンが改ざんされていないかを確認するために使われます。
JWTデコーダーでは、これらを分解して表示できるため、トークンの構造を確認しやすくなります。
標準クレームを日本語で確認できる
JWTには、よく使われる標準クレームがあります。
たとえば、iss は発行者、sub は主体、aud は対象者、exp は有効期限、nbf は有効開始時刻、iat は発行時刻、jti はJWT IDを意味します。
JWTデコーダーでは、こうした標準クレームを日本語で確認できます。
英語の略称だけでは意味がわかりにくい場合でも、各クレームの役割を把握しやすくなります。
有効期限を確認できる
JWTで特に確認することが多いのが、有効期限です。
exp クレームには、トークンの有効期限がUnixタイムスタンプで入ることがあります。
そのままでは人間が日時として確認しづらいため、デバッグ時に不便です。
JWTデコーダーでは、タイムスタンプを読みやすい日時に変換して確認できます。
トークンがすでに期限切れになっているか、まだ有効かを確認しやすくなります。
署名検証にも対応
JWTは、デコードするだけであれば誰でも中身を確認できます。
ただし、デコードできることと、そのトークンが信頼できることは別です。
JWTを信頼するには、署名が正しいかどうかを確認する必要があります。
JWTデコーダーでは、シークレットキーや公開鍵を入力して署名検証を行えます。
HS256、HS384、HS512などのHMAC系アルゴリズム、RS256、RS384、RS512などのRSA系、PS256、PS384、PS512などのRSA-PSS系、ES256、ES384、ES512などのECDSA系に対応しています。
HS256とRS256の違い
JWTでよく使われる署名方式に、HS256とRS256があります。
HS256は、同じシークレットキーで署名と検証を行う方式です。
実装は比較的シンプルですが、検証する側にも同じシークレットキーを渡す必要があります。
RS256は、秘密鍵で署名し、公開鍵で検証する方式です。
検証側に秘密鍵を渡す必要がないため、複数サービス間でトークンを検証する構成に向いています。
JWTデコーダーでは、こうした署名方式に応じた検証が可能です。
alg: none には注意
JWTには、署名なしを示す alg: none という指定が存在します。
署名がないJWTは、改ざん検証ができないため、認証・認可用途で信頼してはいけません。
JWTデコーダーでは、alg: none のような注意が必要なトークンを確認しやすくなっています。
開発中の確認では便利な場合もありますが、本番環境では署名付きのJWTを適切に検証することが重要です。
ブラウザ内で処理されるため安心
JWTには、ユーザーID、メールアドレス、権限情報、有効期限など、認証に関わる情報が含まれている場合があります。
そのため、本番環境のJWTを外部サービスに貼り付けることは避けるべきです。
Mediassort ToolsのJWTデコーダーは、ブラウザ内で処理される設計です。
入力したトークンを外部サーバーに送信せず、利用者の端末上でデコード・確認できます。
ただし、JWTは機密情報を含む可能性があるため、扱う際は社内ルールやセキュリティ方針に従ってください。
使い方
使い方は簡単です。
まず、確認したいJWTトークンを入力欄に貼り付けます。
入力すると、ヘッダー、ペイロード、署名が自動で分解されます。
ペイロード内の標準クレームや有効期限を確認します。
署名検証を行う場合は、利用しているアルゴリズムに応じて、シークレットキーまたは公開鍵を入力します。
署名が有効かどうかを確認し、トークンの改ざん有無や設定内容を確認します。
こんな場面で便利です
JWTデコーダーは、次のような場面で便利です。
API認証で使っているJWTの中身を確認したいとき。
アクセストークンの有効期限を確認したいとき。
exp、iat、iss、sub、aud などのクレームを確認したいとき。
ログイン処理や認証処理のデバッグをしたいとき。
OAuth / OpenID Connect連携時のトークン内容を確認したいとき。
署名検証が失敗する原因を調べたいとき。
HS256、RS256、ES256などの署名方式を確認したいとき。
JWTの構造を学習・確認したいとき。
JSONフォーマッターとの併用もおすすめ
JWTのヘッダーやペイロードは、JSON形式のデータです。
JWTデコーダーで中身を確認したあと、必要に応じてJSONフォーマッターで整形・検証すると、データ構造をさらに確認しやすくなります。
Mediassort Toolsでは、JSONの整形・バリデーション・ミニファイに対応した「JSONフォーマッター」も公開しています。
APIレスポンスや認証関連のデバッグでは、JWTデコーダーとJSONフォーマッターをあわせて使うと便利です。
JWTデコーダーはこちら
メディアソート株式会社では、Web制作・開発に役立つ無料ツール集「Mediassort Tools」を公開しています。
JWTデコーダーでは、JWTトークンのデコード、ヘッダー・ペイロード・署名の分解表示、標準クレームの日本語解説、有効期限チェック、署名検証をブラウザ上で利用できます。
API開発、認証処理のデバッグ、トークン確認にぜひご活用ください。
JWTデコーダーはこちら
https://tools.mediassort.jp/tools/jwt-decoder/