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 ペイロードと秘密鍵を入力してトークンを作成します。読み取り、既存のトークンを貼り付けてヘッダー、ペイロードを確認し、署名を検証します。
HS256
HMAC con SHA-256。共通のシンメトリック鍵。一般的な用途に推奨。
秘密の鍵
エントリー
ヘッダー
ペイロード
仕組み
JSON Web Token(JWT)は、2 者間で情報(クレーム)を運ぶコンパクトで署名付きのトークンです。ドットで区切られた 3 つの部分(ヘッダー、ペイロード、署名)から成り、それぞれ Base64URL で符号化されます。
生成モードでは、ヘッダーとペイロードを JSON で定義し、秘密鍵(HMAC)または秘密鍵(RSA/ECDSA)で署名します。読み取りモードでは、既存のトークンを貼り付けて内容を確認し、署名を検証します。
ペイロードは暗号化されていません。誰でも Base64URL をデコードすれば読めます。署名はトークンが改変されていないことを保証するだけで、内容を隠しません。JWT に機密データを入れてはいけません。
例
header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.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" が推奨されないのはなぜですか?
署名のないトークンが生成されるためです。誰でもペイロードを変更でき、それでも受け入れられてしまいます。テスト用途のみで、本番では絶対に使わないでください。
私のトークンはサーバーに送信されますか?
いいえ。生成、デコード、検証はすべてブラウザー内で行われ、トークンや鍵がデバイスから外に出ることはありません。