JWT エンコードとは?
JWT エンコードは、JSON Web Token を作成するプロセスで、ヘッダーとペイロードを構築し、指定されたアルゴリズムと秘密鍵を使用して署名します。生成された JWT は認証と情報伝送に使用できます。
JWT 生成手順
- ヘッダーの作成:トークンタイプ(JWT)と署名アルゴリズムを指定
- ペイロードの作成:クレームとユーザーデータを追加
- Base64 エンコード:ヘッダーとペイロードを Base64URL エンコード
- 署名の作成:指定されたアルゴリズムと秘密鍵を使用してエンコードされたデータに署名
- トークンの結合:3つの部分をドット(.)で結合して最終的な JWT を形成
サポートされている署名アルゴリズム
- HS256:HMAC SHA-256、最も一般的に使用される対称暗号化アルゴリズム
- HS384:HMAC SHA-384、より強力なセキュリティ
- HS512:HMAC SHA-512、最高レベルのセキュリティ
ペイロードのベストプラクティス
- 標準クレーム:iss、sub、aud、exp、iat などの標準フィールドを使用
- カスタムクレーム:アプリケーション固有のユーザー情報と権限を追加
- 有効期限:常に合理的な exp(有効期限)を設定
- データの最小化:必要な情報のみを含め、機密データを避ける
セキュリティ推奨事項
- 強力な鍵を使用し、少なくとも32文字のランダム文字列
- 定期的に鍵をローテーションしてセキュリティを向上
- 合理的な有効期限を設定し、通常は24時間を超えない
- 本番環境では HTTPS を使用して JWT を送信
- リフレッシュトークンメカニズムの使用を検討