JWT シークレットとは?

JWT の署名検証に使う秘密値の役割と、どこに置くべきかを短く整理したガイドです。

要点

JWT シークレットは、JWT の署名を作成・検証するためのサーバー側の秘密値です。トークンの中身とは別物で、フロントエンドへ公開してはいけません。

JWT シークレットの役割

JWT を HMAC 系のアルゴリズムで署名する場合、JWT シークレットは署名を作るための共通鍵になります。サーバーはこの値を使ってトークンを発行し、受け取ったトークンも同じ値で検証します。

どこに置くべきか

環境変数やシークレット管理サービスに入れて、サーバー側だけで読み込むのが基本です。`.env.local` に置くのは一般的ですが、GitHub などの公開リポジトリには入れないでください。

  • ブラウザに渡さない
  • ソースコードに直書きしない
  • 本番と開発で混ぜない

よくある誤解

JWT の payload はあくまでデータ領域で、秘密情報の保管場所ではありません。また、シークレットを長くするだけでは不十分で、推測しにくい乱数を使うことが重要です。

関連ガイド