Auth0 では、コンプライアンス要件を満たし、秘密鍵の漏えいによってセキュリティが損なわれることを防ぐために、鍵マテリアルを定期的にローテーションすることを推奨しています。 または を使用して、新しい鍵に切り替えることができます。新しい認証情報を作成し、それを private_key_jwt 認証方法に関連付けて、古い認証情報または未使用の認証情報を削除する必要があります。
現在、アプリケーションに保存できる認証情報は同時に 2 つまでです。新しい認証情報を繰り返しローテーションするには、未使用の認証情報を削除する必要があります。
Auth0 Dashboard を使用
Management API を使用
Auth0 Dashboard を使用してアプリケーションの認証情報をローテーションするには、次の手順に従います。
-
Auth0 Dashboard > Applications > Application に移動し、更新するアプリケーションを選択します。
-
Credentials タブに切り替えます。
-
Available Credentials セクションで、Add New Key を選択します。
-
新しい認証情報の名前、PEM 形式の公開鍵、およびその認証情報のアルゴリズムを設定します。
-
Add Credential を選択します。
-
新しい認証情報を有効にするには、その認証情報のメニューに移動し、Enable for Private Key JWT use を選択します。
-
アプリケーションが新しい認証情報を使用するよう更新したら、元の認証情報を無効にします。
- Disable for Private Key JWT Use を選択します。
- 無効にしたら、認証情報のメニューに戻って Delete Credential を選択します。
以下のローテーション例では、credential1 は現在使用中の既存の認証情報、credential2 はそれを置き換える新しい認証情報です。
-
新しいキーペアを生成します。
-
Management API に
POST リクエストを送信して、認証情報リソースを作成します。
現在、アプリケーションに保存できる認証情報は同時に 2 つまでです。新しい認証情報を繰り返しローテーションするには、未使用の認証情報を削除する必要があります。
-
Management API の Update a Client エンドポイントに PATCH リクエストを送信し、認証方法
private_key_jwt に認証情報を関連付けます。
curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \
--header 'Authorization: Bearer {managementApiAccessToken} \
--header 'Content-Type: application/json' \
--data-raw '{
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [{ "id": {credentialId1} }, { "id": {credentialId2} }]
}
}
}'
| パラメーター | 説明 |
|---|
clientId | 更新するアプリケーション。 |
credentialId1 | 現在使用中の既存の認証情報の ID。 |
credentialId2 | 新しい認証情報の ID。 |
managementApiAccessToken | スコープ update:clients および update:credentials を持つ Management API のアクセストークン。 |
-
新しい秘密鍵を使用して Auth0 Authentication API 用のアサーションに署名するよう、アプリケーションを更新します。
-
アプリケーションから未使用の鍵を削除します。
curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId} \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [{ "id": {credentialId2} }]
}
}
}'
-
アプリケーションから未使用の鍵を削除します。これにより、認証情報はストレージから完全に削除されます。認証情報を削除するには、先にアプリケーションとの関連付けを解除する必要があります。解除しないと削除できません。
curl --location --request DELETE 'https://{domain}/api/v2/clients/{clientId}/credentials/{credentialId}' \
--header 'Authorization: Bearer {managementApiAccessToken}
| パラメーター | 説明 |
|---|
clientId | 更新するアプリケーション。 |
credentialId | 削除する古い認証情報の ID。 |
managementApiAccessToken | スコープ delete:credentials を持つ Management API のアクセストークン。 |
ダウンタイムを発生させないようにするため、ローテーション中は複数の認証情報を有効な状態のままにしておくことができます。キーが更新されるまで、アプリケーションは古いキーを使用して通常どおり動作できます。アプリケーションは、有効な認証情報のいずれの組み合わせでも署名付きアサーションを送信できます。
Auth0 では、複数の認証情報を同時に使用する期間はできるだけ短くすることを推奨しています。以下の例では、関連する複数の認証情報を使用しています。
curl --location --request PATCH 'https://$tenant/api/v2/clients/$client_id' \
--header 'Authorization: Bearer $management_access_token' \
--header 'Content-Type: application/json' \
--data-raw '{
"client_authentication_methods": {
"private_key_jwt": {
"credentials": [{ "id": $credential1.id }, { "id": $credential2.id }]
}
}
}'