JWTエンコーダー・デコーダー
JSON Web Tokenのエンコード(生成)とデコード(検証)ができます
JSON Web Token (JWT) のデコード(検証)とエンコード(生成)ができます。
JWT トークン
💡 JWTの雑学・Tips
🔑 JWTは3つの部分で構成されている
JWTは「ヘッダー.ペイロード.署名」の3部構成です。ヘッダーには暗号化アルゴリズム、ペイロードには実際のデータ(ユーザーIDや権限など)、署名には改ざん検出用のハッシュ値が含まれます。各部分はBase64URLエンコードされており、ドット(.)で区切られています。署名があることで、トークンが改ざんされていないことを検証できます。
🔐 秘密鍵は絶対に公開してはいけない
JWTの署名に使われる秘密鍵(Secret Key)が漏洩すると、第三者が偽造トークンを作成できてしまいます。秘密鍵は環境変数で管理し、ソースコードに直接書き込まない、GitHubなどに誤ってコミットしないよう注意が必要です。推奨される鍵の長さはHS256の場合256ビット(32文字)以上です。
⏱️ 有効期限(exp)の設定は必須
JWTには有効期限を示す「exp」(expiration time)クレームを必ず設定しましょう。トークンが盗まれた場合のリスクを最小限に抑えられます。一般的にアクセストークンは15分〜1時間、リフレッシュトークンは数日〜数週間に設定されます。有効期限切れのトークンは自動的に無効化されるため、セキュリティが向上します。
🌐 JWTはステートレス認証に最適
従来のセッション認証ではサーバー側でセッション情報を保持する必要がありますが、JWTはトークン自体に情報を含むため、サーバーが状態を保持する必要がありません(ステートレス)。これにより、マイクロサービス間の認証やモバイルアプリのAPI認証、複数サーバーでの負荷分散が容易になります。
⚠️ 機密情報はペイロードに入れない
JWTのペイロードはBase64でエンコードされているだけで暗号化されていません。誰でもデコードして内容を見ることができます。そのため、パスワード、クレジットカード番号、個人情報などの機密データは絶対にペイロードに含めないでください。ペイロードに含めるべきは、ユーザーID、権限情報、有効期限など、公開されても問題ない最小限の情報のみです。