0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0
設定
HS256, HS384, HS512, RS256, RS512 のアルゴリズムで JSON Web Token (JWT) を生成およびデコードします。生成、JSON ペイロードと秘密鍵を入力してトークンを作成します。読み取り、既存のトークンを貼り付けてヘッダー、ペイロードを確認し、署名を検証します。

HMAC con SHA-256。共通のシンメトリック鍵。一般的な用途に推奨。

秘密の鍵
エントリー

仕組み

JSON Web Token(JWT)は、2 者間で情報(クレーム)を運ぶコンパクトで署名付きのトークンです。ドットで区切られた 3 つの部分(ヘッダー、ペイロード、署名)から成り、それぞれ Base64URL で符号化されます。

生成モードでは、ヘッダーとペイロードを JSON で定義し、秘密鍵(HMAC)または秘密鍵(RSA/ECDSA)で署名します。読み取りモードでは、既存のトークンを貼り付けて内容を確認し、署名を検証します。

ペイロードは暗号化されていません。誰でも Base64URL をデコードすれば読めます。署名はトークンが改変されていないことを保証するだけで、内容を隠しません。JWT に機密データを入れてはいけません。

header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
tokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c署名(3 番目の部分)はアルゴリズムと鍵によって決まります。この例では鍵 "your-256-bit-secret" とともに HS256 を使っています。

ユースケース

  • API でユーザーを認証する。サーバーは署名付きトークンを発行し、セッションを保存せずにリクエストごとに検証します。
  • 認証トークンを調べてデバッグし、クレーム(sub、exp、ロール)や日時を確認する。
  • トークンの署名を秘密鍵または公開鍵で検証し、改ざんされていないことを確認する。
  • 認証フローを開発する際に、さまざまなアルゴリズム(HMAC、RSA、ECDSA)でテスト用トークンを生成する。

よくある質問

JWT の内容は暗号化されていますか?

いいえ。ヘッダーとペイロードは Base64URL で符号化されているだけで、誰でもデコードできます。署名は完全性(改変されていないこと)を保証するもので、機密性ではありません。

HS256 と RS256 の違いは何ですか?

HS256 は署名と検証に 1 つの共有秘密鍵を使います(HMAC)。RS256 は非対称で、秘密鍵で署名し公開鍵で検証します。多くのサービスが発行はできずに検証だけ必要な場合に最適です。

iat、exp、nbf のクレームは何を意味しますか?

標準的なタイムスタンプです。iat(発行時刻)、exp(失効時刻)、nbf(これより前は無効)。1970 年からの秒数(Unix エポック)で表されます。

アルゴリズム "none" が推奨されないのはなぜですか?

署名のないトークンが生成されるためです。誰でもペイロードを変更でき、それでも受け入れられてしまいます。テスト用途のみで、本番では絶対に使わないでください。

私のトークンはサーバーに送信されますか?

いいえ。生成、デコード、検証はすべてブラウザー内で行われ、トークンや鍵がデバイスから外に出ることはありません。