署名鍵のローテーション (OSS)
Logto Cloud を利用している場合は、Console UI で署名鍵のローテーションが可能です。詳しくは このチュートリアル を参照してください。
Logto OSS では v1.8 から署名鍵のローテーションがサポートされています。
Logto OIDC 署名鍵(「OIDC プライベート鍵」や「OIDC クッキー鍵」とも呼ばれます)は、Logto のサインインセッションで JWT(アクセス トークン (Access token)、ID トークン (ID token))やブラウザクッキーに署名するために使用される鍵です。
署名鍵を定期的にローテーションすることで、鍵漏洩のリスクを低減できます。Logto では、少なくとも年に一度は署名鍵をローテーションすることを推奨しています。
OIDC プライベート署名鍵のローテーション
以下の CLI コマンドを使用して、新しい OIDC プライベート署名鍵を生成します。デフォルトでは、新しい鍵は即座に有効になります。ローテーションを段階的に行い、クライアントが新しい鍵で JWT に署名される前に JWKS をリフレッシュする時間を確保したい場合は、グレースピリオドを設定してください。
利用可能なオプション:
--type (任意) JWT の署名鍵アルゴリズム。
"rsa" または "ec" を指定可能。デフォルトは "ec"。
--gracePeriod (任意) プライベート鍵ローテーションのグレースピリオド(秒)。
デフォルトは PRIVATE_KEY_ROTATION_GRACE_PERIOD 環境変数、未設定の場合は 0。
- CLI
- local
- npx
logto db config rotate oidc.privateKeys --type rsa
npm run cli db config rotate oidc.privateKeys -- --type rsa
npx @logto/cli db config rotate oidc.privateKeys -- --type rsa
例えば、新しいプライベート鍵を 4 時間後に有効化するよう段階的にローテーションする場合:
- CLI
- local
- npx
logto db config rotate oidc.privateKeys --type rsa --gracePeriod 14400
npm run cli db config rotate oidc.privateKeys -- --type rsa --gracePeriod 14400
npx @logto/cli db config rotate oidc.privateKeys -- --type rsa --gracePeriod 14400
プライベート鍵ローテーションのデフォルトのグレースピリオドは、環境変数で設定することもできます:
PRIVATE_KEY_ROTATION_GRACE_PERIOD=14400
この環境変数は、Admin Console や Management API でローテーションする場合は Logto サービスに、CLI でローテーションする場合はコマンドを実行するシェルに設定してください。
OIDC クッキー鍵のローテーション
以下の CLI コマンドを使用して、新しい OIDC クッキー鍵を生成します。クッキー鍵のローテーションにはグレースピリオドはサポートされていません。
- CLI
- local
- npx
logto db config rotate oidc.cookieKeys
npm run cli db config rotate oidc.cookieKeys
npx @logto/cli db config rotate oidc.cookieKeys
以前の鍵はどうなりますか?
OIDC プライベート鍵の場合、Logto は段階的なローテーション中に最大 3 つの鍵を保持します:
Next: グレースピリオド終了待ちの新しい鍵。Current: 新たに発行される JWT の署名に現在使用されている鍵。Previous: 直近でローテーションされた鍵で、既存の JWT を有効に保つために保持されます。
グレースピリオド終了後、Next 鍵が Current となり、古い Current 鍵が Previous となり、最も古い Previous 鍵は削除されます。
クッキー鍵の場合、Logto は現在の鍵と前回の鍵を保持します。前回の鍵を削除する際は、予期しない問題が発生する可能性があるため注意してください。すべての既存セッションやトークンが失効したことを確認するまで、前回の鍵を保持することを推奨します。
トラブルシューティング
Cloudflare Zero Trust で Logto を OIDC プロバイダーとして利用する場合
Cloudflare Zero Trust で Logto を OIDC プロバイダーとして利用する場合、ECDSA アルゴリズムを使用する OIDC プロバイダーはサポートされていない点にご注意ください。OIDC プライベート署名鍵をローテーションする際は、ローテーションコマンドで --type rsa を指定し、RSA アルゴリズムを使用してください:
- CLI
- local
- npx
logto db config rotate oidc.privateKeys --type rsa
npm run cli db config rotate oidc.privateKeys -- --type rsa
npx @logto/cli db config rotate oidc.privateKeys -- --type rsa