JWTとは?仕組みと安全な使い方
JWT(JSON Web Token)は認証情報をBase64エンコードされたJSON形式で安全に伝送するためのオープン標準(RFC 7519)です。現代のWebアプリ・APIの認証で広く採用されています。
JWTの3つの構成要素
JWTは「ヘッダー」「ペイロード」「署名」の3パートをドット(.)でつなげた文字列です。ヘッダーはトークンタイプと署名アルゴリズム(HS256など)、ペイロードはクレーム(ユーザーIDや権限・有効期限など)、署名は改ざん検知のためのハッシュです。JWT DecoderではこれらをリアルタイムにデコードしてJSON形式で表示します。
expクレームと有効期限の確認
ペイロードのexp(expiration)クレームはUnixタイムスタンプで有効期限を表します。JWT Decoderでは有効期限の残り時間を人間が読める形で表示し、期限切れの場合は赤く警告します。「なぜかAPIが401を返す」という場面でトークンのexpを確認するのが基本的なデバッグ手順です。
JWTはなぜBase64なのか
JWTのヘッダーとペイロードはBase64URL(URL-safe Base64)でエンコードされているだけで、暗号化はされていません。つまりJWTは「偽造できない」が「中身は見える」という特性があります。機密情報(パスワード・クレジットカード番号)はペイロードに含めてはいけません。改ざん検知には署名(第3パート)を使います。
JWTのデバッグとよくある問題
「署名が無効」「トークンが期限切れ」「issuerが一致しない」はJWT関連のよくあるエラーです。JWT Decoderでトークンをデコードしてiss(issuer)・aud(audience)・exp・iatを確認することで問題を特定できます。オフラインで動作するためトークンを外部サービスに送信するリスクがありません。