ローカル開発用にテストJWTを署名する

APIが署名済みトークンを要求するのに認証サーバが起動していない時、必要なクレーム入りのHS256 JWTをローカルで作れます。

このガイドで使う道具

やりたいこと

保護されたエンドポイントのテストには、APIが受け付ける署名付きトークンが必要です。共通シークレット方式のHS256なら、JSONペイロードへのHMAC-SHA256がそれですが、手作業でのbase64url変換はミスを招きます。

署名する

ペイロードのJSON({"sub":"user-1","role":"admin"}のような形)を貼り、APIが期待する開発用シークレットを入力し、必要ならiat/expを付けます。WebCryptoで署名され、Authorizationヘッダーに貼れるトークンが得られます。

  • 対応はHS256のみ。RSAの鍵ペアではなく共通シークレットを使います。
  • ヘッダーの既定は{"alg":"HS256","typ":"JWT"}です。kidなどの追加フィールドが必要な場合だけ上書きします。

具体例

ペイロード{"sub":"42","exp":...}とシークレット"dev-secret"で3部構成のトークンができ、開発用APIが受け付けます。JWTデコーダーでデコードして、クレームがミドルウェアの想定どおりの位置にあるか確認します。

安全上の注意

使い捨てのシークレットを使ってください。シークレットを知る者は誰でもトークンを偽造できるため、本番のシークレットをここで再利用しないでください。既存トークンの検証もブラウザ内で行われます。

  • 制限: ペイロード・ヘッダーのJSONは100KBまで、シークレットは1,024文字まで。
  • 署名はcrypto.subtleで行われ、外部への送信はありません。