JWT シークレットとは?
JWT の署名検証に使う秘密値の役割と、どこに置くべきかを短く整理したガイドです。
要点
JWT シークレットは、JWT の署名を作成・検証するためのサーバー側の秘密値です。トークンの中身とは別物で、フロントエンドへ公開してはいけません。
JWT シークレットの役割
JWT を HMAC 系のアルゴリズムで署名する場合、JWT シークレットは署名を作るための共通鍵になります。サーバーはこの値を使ってトークンを発行し、受け取ったトークンも同じ値で検証します。
どこに置くべきか
環境変数やシークレット管理サービスに入れて、サーバー側だけで読み込むのが基本です。`.env.local` に置くのは一般的ですが、GitHub などの公開リポジトリには入れないでください。
- ブラウザに渡さない
- ソースコードに直書きしない
- 本番と開発で混ぜない
よくある誤解
JWT の payload はあくまでデータ領域で、秘密情報の保管場所ではありません。また、シークレットを長くするだけでは不十分で、推測しにくい乱数を使うことが重要です。
関連ガイド