> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging-actions-triggers-prototype.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 資格情報のローテーションを行う

> Auth0 Dashboardで既存の資格情報をローテートする方法を説明します。

Auth0では、コンプライアンスを強化するため、また、秘密鍵の漏洩によってセキュリティが損なわれないように、定期的な鍵素材のローテーションを推奨しています。<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=auth0-dashboard" tip="Auth0 Dashboard: サービスを構成するためのAuth0の主製品。" cta="用語集の表示">Auth0 Dashboard</Tooltip>や<Tooltip data-tooltip-id="react-containers-DefinitionTooltip-0" href="/docs/ja-jp/glossary?term=management-api" tip="Management API: 顧客が管理タスクを実行できるようにするための製品。" cta="用語集の表示">Management API</Tooltip>を使用すると、新しい鍵にローテーションして使うことができます。新しい資格情報を作成し、`private_key_jwt`での認証方法と関連付けて、未使用または古い資格情報を削除する必要があります。

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  アプリケーションでのストレージは、現在、一度に2つの資格情報までに制限されています。新しい資格情報を繰り返しローテーションするには、使用していない資格情報を削除する必要があります。
</Callout>

<Tabs>
  <Tab title="Auth0 Dashboardの使用">
    Auth0 Dashboardでアプリケーションの資格情報をローテーションする方法：

    1. [**［Auth0 Dashboard］ > ［Applications（アプリケーション）］ > ［Applications（アプリケーション）］**](https://manage.auth0.com/#/applications)に移動し、更新したいアプリケーションを選択します。
    2. **［Credentials（資格情報）］** タブに切り替えます。
    3. **［Available Credentials（利用可能な資格情報）］** セクションで、**［Add New Key（新しいキーを追加）］** を選択します。
    4. 新しい資格情報の名前、PEM形式の公開鍵、新しい資格情報のアルゴリズムを設定します。
    5. **［Add Credential（資格情報の追加）］** を選択します。
    6. 新しい資格情報を有効にするには、資格情報のメニューに移動し、**［Enable for Private Key JWT use（秘密鍵JWTの使用を有効にする）］** を選択します。
    7. 新しい資格情報を使用するためにアプリケーションを更新したら、元の資格情報は無効にします。

       1. **［Disable for Private Key JWT Use（秘密鍵JWTの使用を無効にする）］** を選択します。
       2. 無効にしたら、資格情報のメニューに戻り、**［Delete Credential（資格情報の削除）］** を選択します。
  </Tab>

  <Tab title="Management APIの使用">
    下のローテーション例は、`credential`は使用している既存の資格情報、`credential2`は既存の資格情報に代わる新しい資格情報です。

    1. 新しいキーペアを生成します。

    2. Management APIに対して`POST`要求を使用して、資格情報リソースを作成します。

           <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
             アプリケーションでの保管は現在、一度に2つの資格情報までに制限されています。新しい資格情報を繰り返しローテーションするには、使用していない資格情報を削除する必要があります。
           </Callout>

    3. Management APIの[クライアントの更新](https://auth0.com/docs/api/management/v2#!/Clients/patch_clients_by_id)エンドポイントにPATCH要求を行い、認証方法`private_key_jwt`に資格情報を関連付けます。

       ```bash lines theme={null}
       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のアクセストークン](/docs/ja-jp/secure/tokens/access-tokens/management-api-access-tokens)。 |

    4. アプリケーションを更新し、新しい秘密鍵を使用して、Auth0認証APIに対してアサーションを署名します。

    5. 使用していないキーをアプリケーションから削除します。

       ```bash lines theme={null}
       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} }]
                    }
                 }
          }'
       ```

    6. 使用していないキーをアプリケーションから削除します。これにより、ストレージから資格情報を永久に削除します。資格情報をアプリケーションから解除しなければ、削除できません。

       ```bash lines theme={null}
       curl --location --request DELETE 'https://{domain}/api/v2/clients/{clientId}/credentials/{credentialId}' \
         --header 'Authorization: Bearer {managementApiAccessToken}
       ```

       | パラメーター                     | 説明                                                                                                                            |
       | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
       | `clientId`                 | 更新したいアプリケーション。                                                                                                                |
       | `credentialId`             | 削除したい古い資格情報のID。                                                                                                               |
       | `managementApiAccessToken` | ` delete:credentials`のスコープを持つ[Management APIのアクセストークン](/docs/ja-jp/secure/tokens/access-tokens/management-api-access-tokens)。 |
  </Tab>
</Tabs>

### アクティブな資格情報

ダウンタイムが発生しないように、ローテーション中は複数の資格情報がアクティブであっても構いません。鍵が更新されるまでは、アプリケーションが古い鍵を使用しても正常に動作します。アプリケーションは、アクティブであればどのような資格情報を使っても、署名のあるアサーションを送信することができます。

ただし、複数の資格情報が使われる時間は最小限に留めることをお勧めします。以下は、複数の資格情報を使用している例です。

```bash lines theme={null}
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 }]
             }
          }
 }'
```

## もっと詳しく

* [秘密鍵JWT認証の設定](/docs/ja-jp/get-started/applications/configure-private-key-jwt)
* [アプリケーションの資格情報](/docs/ja-jp/secure/application-credentials)
* [資格情報の設定](/docs/ja-jp/get-started/applications/credentials)
