nicetool.dev logo

JWTとは?

JSON Web Token (JWT) は、JSONオブジェクトとして関係者間で安全に情報を送信するための、コンパクトで独立した方法を定義するオープン標準 (RFC 7519) です。この情報はデジタル署名されているため、検証して信頼することができます。

JWTの構造

JWTは、Base64URLエンコードされた3つの部分(ヘッダー、ペイロード、署名)で構成される文字列です。各部分はドット(.)で区切られ、以下の順序で構成されます:

header.payload.signature

主な使用例

  • 認可:最も一般的なシナリオです。ユーザーがログインすると、その後の各リクエストにJWTが含まれ、ユーザーがルート、サービス、リソースにアクセスできるようになります。
  • 情報交換:JWTは関係者間で有効な資格情報をチェックするための良い方法です。
  • ステートレスセッション:サーバーにセッションデータを保持する必要がありません。トークンに必要なすべてのユーザー情報が含まれています。

プライバシーとセキュリティ

お客様のセキュリティが最優先事項です。すべてのJWTデコードと検証ロジックは、ブラウザのJavaScript内でクライアントサイドで行われます。トークン、ヘッダー、ペイロードが当社のサーバーに送信されることはありません。

100%ブラウザベース

JWTデバッガーの使い方

  1. 1

    eyJ で始まるトークンを Encoded 欄に貼り付けます。ヘッダーとペイロードがすぐにデコードされ、整形された JSON で表示されます。

  2. 2

    標準クレームを確認します。exp、iat、nbf などの時刻は読みやすい日時で表示されるので、期限切れか、まだ有効になっていないかが一目でわかります。

  3. 3

    署名を検証するには、HMAC のシークレット(HS256/384/512)か PEM 形式の公開鍵(RS256/384/512、ES256/384/512)を入力します。署名が一致するかが表示されます。

  4. 4

    Generator モードに切り替えるとテスト用トークンを作れます。ペイロードを編集し、アルゴリズムを選び、シークレットか秘密鍵を入力して署名済み JWT をコピーします。

活用例

401 エラーのデバッグ

API が 401 Unauthorized を返すときは、トークンをデコードして exp の期限切れ、aud(audience)の誤り、scope クレームの欠落を探します。

ID プロバイダーのトークン確認

Auth0、Keycloak、Firebase、Azure AD の ID トークンを調べ、アプリが実際に受け取るクレーム(email、roles、groups)を確認できます。

ロールベースのアクセステスト

開発用シークレットで role "admin" と role "viewer" のトークンを作り、認可チェックの両方の分岐をテストします。

鍵ローテーションの確認

鍵を更新した後、新しいトークンと新しい公開鍵を貼り付けて、ヘッダーの kid と署名が新しい鍵に一致することを確認します。

よくある質問

JWT は暗号化されていますか?+

通常はされていません。標準的な JWT(JWS)は Base64URL でエンコードされ署名されているだけで、ペイロードは誰でも読めます。パスワードや機微な個人情報は入れないでください。暗号化されたトークン(JWE)は別の形式です。

3つの部分の意味は?+

header.payload.signature の構成で、ヘッダーはアルゴリズムとトークンの種類、ペイロードはクレームを持ち、署名は前の2つが鍵を持つ者によって作られ改ざんされていないことを証明します。

本番のトークンを貼っても安全?+

デコードと検証はすべてブラウザ内で行われ、当サイトのサーバーには何も送られません。ただし有効なトークンは期限が切れるまでパスワードと同じ働きをするので、テスト用トークンを使うか、デバッグ後に本物を失効させましょう。

HS256 と RS256 のどちらを使うべき?+

HS256 は署名と検証に同じ共有シークレットを使い、単一のサービスならシンプルです。RS256 や ES256 は秘密鍵で署名し公開鍵で検証するため、1つの発行元のトークンを多くのサービスが検証する構成に向いています。