JWTとは
JWT(JSON Web Token、「ジョット」と読みます)は、ログイン情報や権限などを JSON 形式で安全にやり取りするためのトークンです。OAuth 2.0 / OpenID Connect のアクセストークンや ID トークン、Firebase Authentication、Auth0、AWS Cognito などで広く使われています。
JWTは . で区切られた3つのパートでできています。
| パート | 内容 |
|---|---|
| ヘッダー | 署名アルゴリズム(alg)やトークンの種類(typ) |
| ペイロード | ユーザーIDや有効期限などの情報(クレーム) |
| 署名 | 改ざんされていないことを確認するための署名 |
ヘッダーとペイロードは URL-safe Base64 でエンコードされているだけで、暗号化はされていません。誰でも中身を読めるので、パスワードなどの秘密情報をペイロードに入れてはいけません。
主なクレーム
| クレーム | 意味 |
|---|---|
iss | 発行者(Issuer) |
sub | 主体・ユーザーID(Subject) |
aud | 受信者(Audience) |
exp | 有効期限(Expiration Time)。UNIX時間(秒) |
nbf | 有効開始日時(Not Before) |
iat | 発行日時(Issued At) |
jti | トークンの一意なID |
よくある質問
本番のトークンを貼り付けても大丈夫ですか?
当ツールはトークンをサーバーに送信せず、ブラウザ内でデコードします。ただし、有効なアクセストークンは漏れると悪用される恐れがあるため、どのツールでも取り扱いには注意し、確認後はクリアすることをおすすめします。
署名の検証はできますか?
このツールはデコード(中身の表示)専用で、署名の検証は行いません。署名の検証には秘密鍵・公開鍵が必要なため、サーバー側のライブラリで行ってください。
「401 Unauthorized」の原因を調べたい
まず exp(有効期限)が過ぎていないか、aud や iss がAPIの設定と一致しているかを確認してください。サーバーとクライアントの時計のずれにも注意しましょう。