概要
JWT(JSON Web Token)は、ユーザー認証や情報の安全な受け渡しに使われるトークン形式の一つです。
サーバーやクライアント間でデータをやり取りする際に、
改ざんされていないことを確認できる仕組みを提供します。
WebアプリケーションやAPIの認証・認可に広く利用されています。
正式名称
JSON Web Token(ジェイソン・ウェブ・トークン)
略称
JWT(ジェイ・ダブリュー・ティー)
特徴
- コンパクト:トークンは短く、URLやHTTPヘッダ、Cookieに容易に載せられる。
- 自己完結型:トークン内部に必要な情報(ユーザーIDや有効期限など)が含まれており、追加のデータベース問い合わせが不要な場合がある。
- 署名付き:改ざん防止のため、秘密鍵や公開鍵による署名が施される。
- 柔軟な利用:認証以外にも、情報の安全なやり取り全般に利用できる。
- 短期利用が前提:長期保存には向かず、有効期限(exp)を設定して使うのが基本。
具体例
例えば、ユーザーがWebアプリにログインすると、サーバーはユーザーのIDなどを含むJWTを発行します。
JWTは以下の3つの部分で構成されています:
- Header(ヘッダー):アルゴリズムやトークンのタイプを記載
{ "alg": "HS256", "typ": "JWT" }
- Payload(ペイロード):ユーザー情報や有効期限などを記載
{ "sub": "1234567890", "name": "Taro Yamada", "exp": 1735689600 }
- Signature(署名):HeaderとPayloadを秘密鍵で署名したもの
これらを「ドット区切り」で連結した文字列がJWTです:
xxxxx.yyyyy.zzzzz
ログイン後、クライアントはこのJWTをHTTPリクエストの Authorization
ヘッダに付与してAPIにアクセスします。
サーバー側は署名を検証し、改ざんされていないかを確認した上でリクエストを処理します。
関連用語
用語 | 解説 |
---|---|
認証(Authentication) | ユーザーが誰であるか確認する仕組み |
認可(Authorization) | ユーザーが何をできるか制御する仕組み |
セッション | 従来のログイン管理方法(サーバー側に情報保持) |
OAuth 2.0 | 認可のためのプロトコルで、JWTと併用されることが多い |
Access Token / Refresh Token | JWT形式で発行されることが多いトークンの種類 |