RSA 署名の JWT(RS256)を使う
RS256 は RSA-SHA256 で JWT に署名します。秘密鍵の保持者だけが署名でき、公開鍵を持つ誰でも検証できる非対称な方式です。
- 1
JWT は複数の署名アルゴリズムをサポートしています。RS256 (RSA-SHA256) は非対称で、認可サーバーが秘密鍵で署名し、任意のサービスが公開鍵で検証できます。対称鍵の共有が現実的でない分散システムでは、HS256 (HMAC) よりこちらが適しています。
- 2 JWT エンコーダー →
RS256 で JWT を作成します。ヘッダーの alg を "RS256" に設定し、クレーム (sub、exp、iat、iss、aud) を含めて、RSA 秘密鍵で署名します。公開鍵は JWKS (JSON Web Key Set) 経由で配布します。
- 3 JWT デコーダー →
JWT をデコードして検証します。JWKS エンドポイントから取得した公開鍵で RS256 署名を検証します。クレームを確認します:exp (有効期限切れでないこと)、aud (正しいオーディエンス)、iss (信頼できる発行者)。署名検証を省略してはいけません。
- 4 jwt
JWT 検査ワークフローを使うと、ヘッダーとペイロードのデコード、署名検証、すべてのクレームの確認を 1 ステップで行えます。
- 5
鍵管理:公開鍵は既知の JWKS URL (例: /.well-known/jwks.json) で公開します。署名鍵は定期的にローテーションし、検証側がどの鍵を使えばよいか分かるよう、JWT ヘッダーに kid (キー ID) を含めてください。ローテーション中は新旧両方の鍵をサポートする移行期間を設けます。
よくある質問
- RS256 と HS256 のどちらを使うべきですか?
- 複数のサービスがシークレットを共有せずにトークンを検証する必要がある場合は RS256 を使ってください。HS256 を使うのは、単一サーバーまたは密結合のシステムで対称鍵の共有が現実的な場合だけです。RS256 は OAuth2/OIDC のデフォルトです。
- 鍵のローテーションはどう扱えばよいですか?
- kid (キー ID) ヘッダーパラメータを使います。ローテーション中は、JWKS で新旧両方の鍵を公開します。旧鍵で署名されたトークンは、有効期限が切れるまで有効です。古いトークンがすべて期限切れになった後で、JWKS から旧鍵を削除します。
このタスクを解決するワークフロー
関連ツール
JWT エンコーダー
エンコード JWT with HS256. Free, private, 100% client-side. Not for server-side verification. ツール
JWT デコーダー
Decode and inspect JWT header, payload, and time claims with expiry status。無料、プライベート、100%クライアントサイド。 ツール
RSA ツール
RSA key generation, encryption, decryption, signing, and verification using Web Crypto API。無料、プライベート、100%クライアントサイド。 ツール