JWTデコーダー
JSON Web Token(JWT)を瞬時にデコードします。お使いのブラウザ内で実行されるため、トークンがデバイスの外に出ることはなく、本番環境のシークレットでも安全に利用できます。
このツールの使い方
- 1
入力欄にJWTを貼り付けます。
- 2
「デコード」をクリックします。ヘッダーとペイロードが解析され、表示されます。
- 3
アルゴリズム、クレーム(claims)、有効期限、発行者を確認します。
JWTとは何か、そしてどのように機能するのか?
JSON Web Token(JWT、RFC 7519で定義)とは、ユーザーに関する一連のクレーム(claims)を、コンパクトでURLセーフな形式で表現する方法であり、それらのクレームが改ざんされていないことを暗号的に証明します。JWTは、最新のWebスタックの大半で認証を支えています。ログインすると、サーバーはあなたのユーザーIDと権限を含むJWTを作成し、シークレットキーで署名して返します。ブラウザはそのトークンを保存し(通常はlocalStorageまたはCookie内)、以降のすべてのリクエストのAuthorizationヘッダーに含めます。サーバーはリクエストごとに署名を検証します。署名が有効ならトークンのクレームは信頼され、改ざんされていれば署名が破綻してリクエストは拒否されます。JWTはBase64URLでエンコードされピリオドで区切られた3つの部分から成ります。ヘッダーは署名アルゴリズムを宣言します(HMAC-SHA256の場合はHS256、RSAの場合はRS256、ECDSAの場合はES256、署名なしトークンの場合はnone。これは危険であり拒否すべきです)。ペイロード(payload)には実際のクレームが含まれます('sub'は主体、'exp'は有効期限、'iat'は発行日時といった標準クレームに加え、アプリケーションが定義する任意のカスタムクレーム)。署名は、ヘッダーとペイロードが、シークレットを保有する者によって署名されたことの証明です。このデコーダーは最初の2つの部分を明らかにします。これらは公開情報です。署名はキーがなければ検証できません。だからこそ、あらゆるJWTデコーダーは検証なしでクレームを表示するのです。
よくある活用例
クライアントが送信したJWTをデコードして認証の問題をデバッグする。どんなクレームを含み、誰が発行し、いつ失効するかを正確に確認できます。
APIゲートウェイのJWT(AWS Cognito、Auth0、Okta)を調べ、下流サービスのクレーム構造を把握する。
カスタムクレーム(組織ID、ロール、機能フラグ)がトークン発行コードで正しく設定されているか検証する。
更新前後のトークンを比較し、有効期限が延長されたことを確認する。
トークンのアルゴリズムを監査する。本番環境ではRS256またはES256が使われ、決して'none'が使われていないことを確認する。
サーバーログのbase64urlペイロードを、読みやすいクレームに変換する。
よくある質問
本番環境のJWTで使っても安全ですか?▼
これは署名を検証しますか?▼
JWTが失効していたらどうなりますか?▼
JWTは暗号化できますか?▼
'alg': 'none'とはどういう意味で、危険なのですか?▼
なぜセッションCookieではなくJWTを使うのですか?▼
JWTの標準クレームには何がありますか?▼
関連ツール
JSONフォーマッター&バリデーター
JSONをオンラインで整形、検証、minify(圧縮)します。すべてお使いのブラウザ内で動作するため、データがデバイスから外に出ることはありません。
XMLフォーマッター
XMLドキュメントを整形して読みやすくします。SOAP、サイトマップ、RSSフィード、設定ファイルに役立ちます。
Base64エンコーダー&デコーダー
文字列をBase64にエンコードしたり、Base64をテキストにデコードしたりします。あなたのプライバシーを尊重し、すべてブラウザ内で実行されます。
URLエンコーダー&デコーダー
テキストをURLセーフなエンコード(パーセントエンコーディング)に変換したり、その逆を行ったりします。クエリ文字列、リダイレクト、OAuthフローに役立ちます。
HTMLエンティティエンコーダー&デコーダー
特殊文字をHTMLエンティティ(&、<など)に変換したり、その逆を行ったりします。テキストを安全にHTMLへ埋め込むのに役立ちます。
CSS圧縮ツール
CSSからコメント、空白、不要な文字を取り除いて、ファイルサイズを削減します。