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

# Configurer l’authentification par clé privée JWT

> Décrit comment configurer les applications nouvelles et existantes pour utiliser l’authentification par clé privée JWT.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La Clé privée JWT est disponible pour les clients du plan Enterprise. Pour mettre votre plan à niveau, contactez le service [Tarification Auth0](https://auth0.com/pricing/).
</Callout>

L’authentification par clé privée <Tooltip href="/docs/fr-ca/glossary?term=json-web-token" tip="Jeton Web JSON (JWT)
Format standard de jeton d’ID (et souvent de jeton d’accès) utilisé pour représenter en toute sécurité des demandes entre deux parties." cta="Voir le glossaire">JWT</Tooltip> prend en charge l’authentification client [OIDC Connect Core Client Authentication 1.0](https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication) en utilisant des assertions signées par des paires de clés asymétriques. Vous pouvez créer une nouvelle application pour qu’elle utilise `private_key_jwt` ou permettre aux applications existantes d’utiliser des paires de clés privées pour l’authentification.

## Prérequis

Vous devez [générer une paire de clés RSA](/docs/fr-ca/secure/application-credentials/generate-rsa-key-pair) avant de configurer votre application qui s’authentifie par clé privée JWT.

## Configurer la clé privée JWT

<Tabs>
  <Tab title="Auth0 Dashboard">
    Vous pouvez utiliser Auth0 Dashboard pour créer une nouvelle application et configurer des identifiants ou mettre à jour une application existante.

    Nous vous recommandons de stocker en toute sécurité le paramètre `client_secret` actuel avant de définir la méthode d’identification de votre application sur la clé privée JWT. Le paramètre `client_secret` sera masqué une fois la configuration de la clé privée JWT terminée.

    #### Configurer une nouvelle application pour `private_key_jwt`

    1. Naviguez vers [**Auth0 Dashboard > Applications > Applications**](https://manage.auth0.com/#/applications).

    2. Sélectionnez **Create Application (Créer une application)**.

    3. Choisissez votre type d’application.

    4. Dans les paramètres de l’application, sélectionnez l’onglet **Identifiants**.

    5. Sous **Méthodes d’authentification**, sélectionnez **Clé privée JWT**.

           <Frame>
             <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/M4OX-dUcWfCOjXvH/docs/images/fr-ca/cdy7uua7fh8z/33kfi48tkbMIOQJ8PBxj76/3a37d4906b80c31d5427b852f56cdb00/Default_App_-_Creds_-_French.png?fit=max&auto=format&n=M4OX-dUcWfCOjXvH&q=85&s=660d7fa68c208ee4beda276c0d103426" alt="Configuration de l’authentification JWT Private Key (Clé privée JWT) - Instructions pour le Auth0 Dashboard (Tableau de bord Auth0)" width="1102" height="1188" data-path="docs/images/fr-ca/cdy7uua7fh8z/33kfi48tkbMIOQJ8PBxj76/3a37d4906b80c31d5427b852f56cdb00/Default_App_-_Creds_-_French.png" />
           </Frame>

    6. Configurer les détails de l’identifiant :

       1. Entrez un nom pour l’identifiant.
       2. Téléversez votre certificat en format PEM ou X.509.
       3. Sélectionnez l’algorithme pour signer les assertions.
       4. Facultatif : Activez l’expiration personnalisée. Sélectionnez **Set an explicit expiry date for this Credential (Définir une date d’expiration explicite pour cet identifiant)** et définissez une date dans le futur.

              <Warning>
                Vous pouvez recevoir une erreur de certificat invalide si vous soumettez un matériel de clé malformé. Pour éviter tout problème, il est préférable de téléverser le fichier directement créé par OpenSSL.
              </Warning>

    7. Sélectionnez **Add Credential (Ajouter l’identifiant)**.

    #### Configurer une application existante

    1. Naviguez jusqu’à [Auth0 Dashboard > Applications](http://manage.auth0.com/#/applications).
    2. Sélectionnez l’application à mettre à jour.
    3. Sélectionnez l’onglet **Credentials (Identifiants)**.
    4. Choisissez **Clé privée JWT**.
    5. Configurer les détails de l’identifiant :

       1. Entrez un nom pour l’identifiant.
       2. Téléversez votre certificat en format PEM ou X.509.
       3. Sélectionnez l’algorithme pour signer les assertions.
       4. Facultatif : Activez l’expiration personnalisée. Sélectionnez **Set an explicit expiry date for this Credential (Définir une date d’expiration explicite pour cet identifiant)** et définissez une date dans le futur.
    6. Sélectionnez **Add Credential (Ajouter l’identifiant)**.

    #### Configurer une application pour qu’elle utilise l’authentification secret client

    1. Naviguez vers [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/dashboard/#/applications/) et sélectionnez l’application que vous voulez mettre à jour.
    2. Sélectionnez l’onglet **Credentials (Identifiants)**.
    3. Choisissez **Client Secret Post (Secret client Post)** ou **Client Secret Basic (Secret client Basic)**.
    4. Sélectionnez **Save (Enregistrer)**.

    #### Mettre à jour la date d’expiration de l’identifiant

    Vous pouvez mettre à jour un identifiant existant en y ajoutant une date d’expiration dans Auth0 Dashboard.

    1. Naviguez vers [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/dashboard/#/applications/) et sélectionnez l’application que vous voulez mettre à jour.

    2. Sélectionnez l’onglet **Credentials (Identifiants)**.

    3. Choisissez l’identifiant que vous voulez mettre à jour et sélectionnez **Edit Credential (Modifier l’identifiant)**.

           <Frame>
             <img src="https://mintcdn.com/docs-dev-actions-triggers-prototype/AzFg9TUnnX-9tz7j/docs/images/fr-ca/cdy7uua7fh8z/6858PTDkNCRZiIqtBVmciZ/98cad98076e61ac1a3a9d0620dbc99dc/Demo_Key2_-_French.png?fit=max&auto=format&n=AzFg9TUnnX-9tz7j&q=85&s=f480c979a5ec207292e17857012dd58b" alt="Dashboard - Applications - Application Settings - Credentials - update expiry date" width="1102" height="381" data-path="docs/images/fr-ca/cdy7uua7fh8z/6858PTDkNCRZiIqtBVmciZ/98cad98076e61ac1a3a9d0620dbc99dc/Demo_Key2_-_French.png" />
           </Frame>

    4. Sélectionnez **Set an explicit expiry date for this Credential (Définir une date d’expiration explicite pour cet identifiant)** et définissez une date ultérieure.

    5. Sélectionnez **Update Credential (Mettre à jour l’identifiant)**.
  </Tab>

  <Tab title="Management API">
    #### Configurer une nouvelle application pour `private_key_jwt`

    Vous pouvez créer une nouvelle application avec `private_key_jwt` comme méthode d’authentification à l’aide de Management API. Effectuez un appel `POST` au point de terminaison [`Create a Client`](https://auth0.com/docs/api/management/v2#!/Clients/get_clients) avec la charge utile suivante :

    ```bash lines theme={null}
    curl --location --request POST 'https://{domain}/api/v2/clients' \
      --header 'Authorization: Bearer {managementApiAccessToken} \
      --header 'Content-Type: application/json' \
      --data-raw '{
     "name": "{clientName}",
     "app_type": "non_interactive",
     "client_authentication_methods": {
       "private_key_jwt": {
         "credentials": [
           { 
              "name": "{credentialName}", 
              "credential_type": "public_key", 
              "pem": "{credentialublicKey}",
              "alg": "{algorithm}",
              "expires_at": "{expiresAt}"
           }
         ]
       },
       "jwt_configuration": {
         "alg": "RS256"
       }
     }
    }'
    ```

    | Paramètre                  | Description                                                                                                                                                                                                                                                                                       |
    | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `algorithm`                | Algorithme utilisé pour signer les assertions. Les valeurs prises en charge sont RS256, RS384 et PS256. S’il n’est pas précisé, l’algorithme sera par défaut RS256.                                                                                                                               |
    | `clientName`               | Nom pour votre nouveau client.                                                                                                                                                                                                                                                                    |
    | `credentialName`           | Nom pour la clé publique.                                                                                                                                                                                                                                                                         |
    | `expires_at`               | Facultatif. Date d’expiration de l’authentifiant au format ISO 8601. Par exemple, « 2020-08-20T19:10:06.299Z ». Une fois la date d’expiration passée, l’authentifiant n’est plus valide.                                                                                                          |
    | `managementApiAccessToken` | [Jeton d’accès pour Management API](/docs/fr-ca/secure/tokens/access-tokens/management-api-access-tokens) avec la permission `create:credentials`.                                                                                                                                                |
    | `pem`                      | Clé publique, ou certificat x.509, encodé au format PEM.                                                                                                                                                                                                                                          |
    | `parse_expiry_from_cert`   | Facultatif. Un booléen qui indique à Auth0 d’analyser la date d’expiration lorsqu’un certificat lui est fourni. Si aucun certificat n’est fourni , Auth0 renverra une erreur. `parse_expiry_from_cert` et `expires_at` sont aussi mutuellement exclusifs. Dans ce cas, Auth0 renverra une erreur. |

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      La clé publique PEM devrait être échappée par JSON avant d’être transmise à Auth0. Dans notre exemple, voici le contenu que nous devrions transmettre :

      `-----BEGIN PUBLIC KEY-----
            MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA53VzmIVVZZWyNm266l82
            mnoDc9g/snXklax5kChEhqK/WnTUvuXP4Gd4THj8rchxgUGKXd4PF3SUcKyn/qPm
            Tet0idVHk2PwP//FOVgYo5Lb04js0pgZkbyB/WjuMp1w+yMuSn0NYAP7Q9U7DfTb
            jmox8OQt4tCB4m7UrJghGqT8jkPyZO/Ka6/XsyjTYPOUL3t3PD7JShVAgo1mAY6g
            Sr4SORywIiuHsg+59ad7MXGy78LirhtqAcDECKF7VZpxMuEjMLg3o2yzNUeWI2Mg
            IF+t0HbO1E387fvLcuSyai1yWbSr1PXyiB2aXyDpbD4u7d3ux4ahU2opH11lBqvx
            +wIDAQAB -----END PUBLIC KEY-----`
    </Callout>

    La réponse contient la propriété `client_id`, qui liera votre application au serveur de ressources. La réponse contient également un `kid` généré pour l’identifiant que vous avez créé. Celui-ci sera utilisé plus tard pour générer la valeur `client_assertion`.

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      Auth0 utilise la norme [Schéma de clé Web JSON](https://datatracker.ietf.org/doc/html/rfc7638) pour générer l’enfant de vos identifiants.

      L’enfant consiste en un ensemble SHA256 codé en base64URL de la représentation JWK de votre clé publique.
    </Callout>

    #### Configurer une application existante

    Vous pouvez aussi configurer une application existante pour utiliser l’authentification par clé privée JWT avec Auth0 Management API. Vous devrez retirer les valeurs du champ `token_endpoint_auth_method` et créer des valeurs dans le champ `client_authentication_methods`.

    <Warning>
      Si vous mettez à jour une application de production existante pour effectuer l’authentification avec `private_key_jwt`, nous vous conseillons de stocker en toute sécurité votre valeur `client_secret` actuelle pour consultation future.

      Après avoir configuré private\_key\_jwt, vous ne pourrez plus accéder à la valeur client\_secret, à moins que vous ne rétablissiez la configuration de votre application pour utiliser un secret client.
    </Warning>

    ##### Créer la ressource d’identification

    Une fois que vous avez généré une paire de clés, créez la ressource d’identification. Effectuez la demande POST suivante au point de terminaison [`/clients`](https://auth0.com/docs/api/management/v2#!/Clients/post_clients) de Management API.

    ```bash lines theme={null}
    curl --location --request POST 'https://{domain}/api/v2/clients/{clientId}/credentials' \
      --header 'Authorization: Bearer {managementApiAccessToken} \
      --header 'Content-Type: application/json' \
      --data-raw '{
              "name": "{credentialName}", 
              "credential_type": "public_key", 
              "pem": "{credentialPublicKey}",
              "alg": "{algorithm}",
              "expires_at ": "{expiresAt}",
    }'
    ```

    | Paramètre                  | Description                                                                                                                                                                                                                                                                           |
    | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `algorithm`                | Algorithme utilisé pour signer les assertions. Les valeurs prises en charge sont RS256, RS384 et PS256. S’il n’est pas spécifié, l’algorithme par défaut est RS256.                                                                                                                   |
    | `clientId`                 | Identifiant de l’application à mettre à jour.                                                                                                                                                                                                                                         |
    | `credentialName`           | Nom de la clé publique.                                                                                                                                                                                                                                                               |
    | `managementApiAccessToken` | [Jeton d’accès à Management API](/docs/fr-ca/secure/tokens/access-tokens/management-api-access-tokens) avec la permission `create:credentials`.                                                                                                                                       |
    | `pem`                      | Clé publique, ou certificat x.509, encodée au format PEM.                                                                                                                                                                                                                             |
    | `expires_at`               | Facultatif. Date d’expiration de l’identifiant au format ISO 860. Par exemple, `2020-08-20T19:10:06.299Z`. Une fois la date d’expiration passée, l’identifiant n’est plus valide.                                                                                                     |
    | `parse_expiry_from_cert`   | Facultatif. Un booléen qui indique qu’Auth0 doit analyser l’expiration lorsqu’un certificat est fourni. Si aucun certificat n’est fourni, Auth0 renvoie une erreur. `parse_expiry_from_cert` et `expires_at` sont mutuellement exclusifs. Dans ce cas, Auth0 va retourner une erreur. |

    <Callout icon="file-lines" color="#0EA5E9" iconType="regular">
      La clé publique PEM doit être décodée en JSON avant d’être transmise à Auth0. Dans cet exemple, le contenu à inclure est le suivant :

      ```lines theme={null}
      ----BEGIN PUBLIC KEY-----
      MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA53VzmIVVZZWyNm266l82
      mnoDc9g/snXklax5kChEhqK/WnTUvuXP4Gd4THj8rchxgUGKXd4PF3SUcKyn/qPm
      Tet0idVHk2PwP//FOVgYo5Lb04js0pgZkbyB/WjuMp1w+yMuSn0NYAP7Q9U7DfTb
      jmox8OQt4tCB4m7UrJghGqT8jkPyZO/Ka6/XsyjTYPOUL3t3PD7JShVAgo1mAY6g
      Sr4SORywIiuHsg+59ad7MXGy78LirhtqAcDECKF7VZpxMuEjMLg3o2yzNUeWI2Mg
      IF+t0HbO1E387fvLcuSyai1yWbSr1PXyiB2aXyDpbD4u7d3ux4ahU2opH11lBqvx
      +wIDAQAB
      -----END PUBLIC KEY-----
      ```
    </Callout>

    Un identifiant est retourné dans la réponse. Utilisez l’identifiant pour l’étape suivante.

    ##### Association de l’identifiant

    Une fois que vous avez créé l’identifiant, associez-le à votre application. Votre application utilise ces identifiants pendant l’authentification avec `private_key_jwt`.

    Effectuez une requête PATCH au point de terminaison [`Update a Client`](https://auth0.com/docs/api/management/v2#!/Clients/patch_clients_by_id) de Management API :

    ```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 '{
              "token_endpoint_auth_method": null, 
              "client_authentication_methods": {
                 "private_key_jwt": {
                    "credentials": [{ "id": {credentialId} }]
                 }
              }
       }​​'​​
    ```

    | Parameter                  | Description                                                                                                                                                          |
    | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `clientId`                 | ID de l’application à mettre à jour.                                                                                                                                 |
    | `managementApiAccessToken` | [Jeton d’accès à Management API](/docs/fr-ca/secure/tokens/access-tokens/management-api-access-tokens) avec les permissions `update:client` et `update:credentials`. |
    | `credentialId`             | ID de l’identifiant que vous avez créé.                                                                                                                              |
    | `pem`                      | La clé publique en format PEM.                                                                                                                                       |

    <Warning>
      Auth0 ne prend pas en charge l’utilisation de HS256 comme algorithme de signature JWT de l’application. Vous devez avoir le champ `jwt_configuration.alg` défini sur l’algorithme RS256. Pour savoir comment modifier l’algorithme de signature, lisez [Modifier les algorithmes de signature de l’application](/docs/fr-ca/get-started/applications/change-application-signing-algorithms).
    </Warning>

    #### Configurer une application pour qu’elle utilise l’authentification par secret client

    Pour restaurer la configuration de votre application afin qu’elle utilise un secret client, vous devez désactiver `client_authentication_methods` et activer à nouveau `token_endpoint_auth_method` avec la méthode d’authentification.

    <Warning>
      Une fois que vous avez configuré votre méthode d’authentification en tant que `client_secret`, vos applications ne seront plus capables de s’authentifier en utilisant `private_key_jwt` tant que vous ne les aurez pas mises à jour pour s’authentifier avec `client_secret`.
    </Warning>

    **Exemple**

    ```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 '{
              "token_endpoint_auth_method": "{tokenEndpointAuthMethod}", 
              "client_authentication_methods": null
       }​​'​​
    ```

    | Paramètre                  | Description                                                                                                                                    |
    | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
    | `clientId`                 | ID de l’application à mettre à jour.                                                                                                           |
    | `managementApiAccessToken` | [Jeton d’accès pour Management API](/docs/fr-ca/secure/tokens/access-tokens/management-api-access-tokens) avec les permissions `update:client` |
    | `tokenEndpointAuthMethod`  | Méthode d’authentification finale. Par exemple : `client_secret_basic` ou `client_secret_post`.                                                |

    #### Ajout d’un champ d’expiration comme correctif pour les identifiants

    Vous pouvez mettre à jour un identifiant existant avec une date d’expiration à l’aide du point de terminaison [Mettre à jour un identifiant](https://auth0.com/docs/api/management/v2#!/Clients/patch_credentials_by_credential_id) de Management API.

    ```bash lines theme={null}
    curl --location --request PATCH 'https://{domain}/api/v2/clients/{clientId}/credentials/{credentialId} ' \
      --header 'Authorization: Bearer {managementApiAccessToken} \
      --header 'Content-Type: application/json' \
      --data-raw '{
              "expires_at": {expiresAt}
       }'
    ```

    \| Paramètre | Description | | ---------- | ---------- | |`managementApiAccessToken`| Jetons d’accès à Management API avec les permissions  `update:credentials`.| |`clientId`| Le client que vous souhaitez mettre à jour.| |`expires_at`|La date d’expiration des identifiants est au format ISO 8601. Par exemple, `2020-08-20T19:10:06.299Z`.|

    Le champ `expires_at` est le seul que vous pouvez mettre à jour. Le reste des attributs sont immuables et nécessitent une rotation de l’identifiant pour être modifiés.
  </Tab>
</Tabs>

## Limites des identifiants

Auth0 impose une taille de clé RSA minimale de 2 048 bits et une taille de clé maximale de 4 096 bits. Les applications peuvent avoir un maximum de deux informations d’identification configurées.

## Rotation des identifiants

Pour éviter les fuites de clés, Auth0 recommande une rotation périodique de la paire de clés. Pour en savoir plus, lisez [Rotation des identifiants](/docs/fr-ca/get-started/applications/rotate-credentials).

## En savoir plus

* [Authentifiants d’application](/docs/fr-ca/secure/application-credentials)
* [Paramètres des identifiants](/docs/fr-ca/get-started/applications/credentials)
* [Authentification avec clé privée JWT](/docs/fr-ca/get-started/authentication-and-authorization-flow/authenticate-with-private-key-jwt)
