ローカル開発用にテスト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で行われ、外部への送信はありません。