コンテンツへスキップ
uencoder

RSA 署名の JWT(RS256)を使う

RS256 は RSA-SHA256 で JWT に署名します。秘密鍵の保持者だけが署名でき、公開鍵を持つ誰でも検証できる非対称な方式です。

  1. 1

    JWT は複数の署名アルゴリズムをサポートしています。RS256 (RSA-SHA256) は非対称で、認可サーバーが秘密鍵で署名し、任意のサービスが公開鍵で検証できます。対称鍵の共有が現実的でない分散システムでは、HS256 (HMAC) よりこちらが適しています。

  2. 2
    JWT エンコーダー →

    RS256 で JWT を作成します。ヘッダーの alg を "RS256" に設定し、クレーム (sub、exp、iat、iss、aud) を含めて、RSA 秘密鍵で署名します。公開鍵は JWKS (JSON Web Key Set) 経由で配布します。

  3. 3
    JWT デコーダー →

    JWT をデコードして検証します。JWKS エンドポイントから取得した公開鍵で RS256 署名を検証します。クレームを確認します:exp (有効期限切れでないこと)、aud (正しいオーディエンス)、iss (信頼できる発行者)。署名検証を省略してはいけません。

  4. 4

    JWT 検査ワークフローを使うと、ヘッダーとペイロードのデコード、署名検証、すべてのクレームの確認を 1 ステップで行えます。

  5. 5

    鍵管理:公開鍵は既知の JWKS URL (例: /.well-known/jwks.json) で公開します。署名鍵は定期的にローテーションし、検証側がどの鍵を使えばよいか分かるよう、JWT ヘッダーに kid (キー ID) を含めてください。ローテーション中は新旧両方の鍵をサポートする移行期間を設けます。

よくある質問

RS256 と HS256 のどちらを使うべきですか?
複数のサービスがシークレットを共有せずにトークンを検証する必要がある場合は RS256 を使ってください。HS256 を使うのは、単一サーバーまたは密結合のシステムで対称鍵の共有が現実的な場合だけです。RS256 は OAuth2/OIDC のデフォルトです。
鍵のローテーションはどう扱えばよいですか?
kid (キー ID) ヘッダーパラメータを使います。ローテーション中は、JWKS で新旧両方の鍵を公開します。旧鍵で署名されたトークンは、有効期限が切れるまで有効です。古いトークンがすべて期限切れになった後で、JWKS から旧鍵を削除します。

このタスクを解決するワークフロー

関連ツール