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

> Chiffrez les charges utiles des jetons d’accès à l’aide de JSON Web Encryption (JWE) afin de protéger les claims sensibles contre l’inspection par des intermédiaires ou en cas de violation de données.

# Configurer JSON Web Encryption (JWE)

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Pour utiliser les fonctionnalités Highly Regulated Identity, vous devez avoir un Enterprise Plan avec le module complémentaire Highly Regulated Identity. Consultez [Auth0 Pricing](https://auth0.com/pricing/) pour plus de détails.
</Callout>

Par défaut, Auth0 émet des <Tooltip tip="Jeton d’accès : Identifiant d’autorisation, sous la forme d’une chaîne opaque ou d’un JWT, utilisé pour accéder à une API." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=access+tokens">jetons d’accès</Tooltip> sous la forme d’un [JSON Web Token (JWT)](/docs/fr-ca/secure/tokens/json-web-tokens) signé, ce qui signifie que, même si leur intégrité est protégée, les applications clientes et d’autres intermédiaires peuvent quand même en examiner le contenu. Cela peut entraîner une perte de confidentialité des données qui ne doivent être exposées qu’à un <Tooltip tip="Serveur de ressources : Serveur hébergeant des ressources protégées. Les serveurs de ressources acceptent les requêtes vers des ressources protégées et y répondent." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=resource+server">serveur de ressources</Tooltip>.

Pour empêcher l’inspection non autorisée des jetons d’accès, Auth0 prend en charge l’utilisation de jetons d’accès <Tooltip tip="JSON Web Token (JWT) : Format standard de jeton ID (et souvent de jeton d’accès) utilisé pour représenter de façon sécurisée des claims entre deux parties." cta="Voir le glossaire" href="/docs/fr-ca/glossary?term=JWT">JWT</Tooltip> imbriqués, où les renseignements d’accès sont signés dans un JWT, puis chiffrés et représentés au moyen de JSON Web Encryption (JWE). Les serveurs de ressources doivent à la fois déchiffrer ces jetons d’accès et vérifier la signature de la charge utile JWT, tandis que ces renseignements demeurent opaques pour toute autre partie.

<div id="generate-rsa-key-pair">
  ## Générer une paire de clés RSA
</div>

Avant de configurer une API pour utiliser JWE, vous devez [générer une paire de clés RSA](/docs/fr-ca/secure/application-credentials/generate-rsa-key-pair).

La clé privée doit être gardée secrète. Téléversez la clé publique dans Auth0 au format PEM, comme décrit dans [Générer une paire de clés RSA](/docs/fr-ca/secure/application-credentials/generate-rsa-key-pair). Seul le serveur de ressources ou le serveur d’API peut accéder de manière sécurisée à la clé privée pour déchiffrer le jeton d’accès.

<div id="configure-jwe-for-an-api">
  ## Configurer JWE pour une API
</div>

<Tabs>
  <Tab title="Auth0 Dashboard">
    Utilisez le [Auth0 Dashboard](https://manage.auth0.com/) pour configurer JWE pour votre API. Pour commencer, activez la bascule **JSON Web Encryption (JWE)** sous **Token Settings** pour votre API.

    <Frame>
      <img src="https://mintcdn.com/translations/6GE5Z24GDCZehiJ9/docs/images/cdy7uua7fh8z/5xHKQ3rKN7DZogzD5qFDLp/8747f7f3d36c578e0f4622929cefb8e9/Access_Tokens_Settings_-_English.png?fit=max&auto=format&n=6GE5Z24GDCZehiJ9&q=85&s=f54a4c12267ef55cbb1076f046bd3fcc" alt="" width="1202" height="881" data-path="docs/images/cdy7uua7fh8z/5xHKQ3rKN7DZogzD5qFDLp/8747f7f3d36c578e0f4622929cefb8e9/Access_Tokens_Settings_-_English.png" />
    </Frame>

    Lorsque vous y êtes invité, ajoutez une clé JSON Web Encryption (JWE) :

    * Saisissez un nom convivial pour la repérer facilement.
    * Téléversez un certificat avec la clé publique encodée au format PEM.
    * Sélectionnez l’algorithme de chiffrement.
    * (Facultatif) Saisissez un identifiant de clé.

    Cliquez sur **Add** pour enregistrer la clé JWE, ce qui générera une empreinte du certificat.
  </Tab>

  <Tab title="Management API">
    Utilisez la [Auth0 Management API](https://auth0.com/docs/api/management/v2) pour configurer JWE pour un serveur de ressources ou un serveur d’API. Vous devez configurer JWE pour chaque API afin que chacune ait sa propre clé publique de chiffrement.

    La requête POST suivante configure une nouvelle API pour recevoir des jetons d’accès chiffrés :

    ```bash lines theme={null}
    curl -X POST --location "https://{domain}/api/v2/resource-servers" \
        -H "Authorization: Bearer {managementAccessToken}" \
        -H "Content-Type: application/json" \
        --data-raw '{
      "name": "{apiName}",
      "identifier": "{apiIdentifier}",
      "token_encryption": {
        "format": "compact-nested-jwe",
        "encryption_key":
        {
          "name": "{credentialName}",
          "pem": "{pem}",
          "alg": "{alg}",
          "kid": "{kid}"
        }
      }
    }'
    ```

    Le tableau suivant explique la signification des différents paramètres :

    | Paramètre        | Obligatoire? | Description                                                                                                                                                              |
    | ---------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
    | `apiName`        | Obligatoire  | Le nom de votre nouvelle API.                                                                                                                                            |
    | `apiIdentifier`  | Obligatoire  | L’identifiant unique de votre API. Il sera utilisé comme audience de votre jeton.                                                                                        |
    | `credentialName` | Facultatif   | Le nom de votre clé publique.                                                                                                                                            |
    | `pem`            | Obligatoire  | Clé publique encodée au format PEM.                                                                                                                                      |
    | `alg`            | Obligatoire  | L’algorithme de chiffrement doit être `RSA-OAEP-256`, `RSA-OAEP-384` ou `RSA-OAEP-512`.                                                                                  |
    | `kid`            | Facultatif   | L’identifiant utilisé pour écrire dans l’en-tête `kid` de votre jeton JWE. Il peut servir à identifier la clé utilisée pour le chiffrement pendant la rotation des clés. |

    La réponse contient la propriété `id`, qui identifie de façon unique le serveur de ressources. Elle contient aussi un champ `thumbprint_sha256` généré qui peut servir à identifier la clé. Auth0 ne renverra pas le contenu de la clé après sa création initiale (dans ce cas-ci, votre PEM).

    Il existe plusieurs façons de générer le `thumbprint_sha256`. Pour en savoir plus, consultez la [RFC 8705 OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens](https://datatracker.ietf.org/doc/html/rfc8705#name-jwt-certificate-thumbprint-).

    Pour vous assurer que vous avez généré le bon `thumbprint_sha256`, vous pouvez utiliser l’exemple de code Node.js suivant pour extraire l’empreinte :

    ```javascript lines theme={null}
    const fs = require('fs');
    const crypto = require('crypto');

    const { calculateJwkThumbprint, exportJWK } = require('jose');

    const publicKeyObject = crypto.createPublicKey(fs.readFileSync('./my_cert.pem'));
    exportJWK(publicKeyObject).then((jwk) => {
      calculateJwkThumbprint(jwk, 'sha256').then((thumbprint) => {
        console.log(thumbprint);
      });
    });
    ```
  </Tab>
</Tabs>

<div id="learn-more">
  ## En savoir plus
</div>

* [JSON Web Encryption](/docs/fr-ca/secure/tokens/access-tokens/json-web-encryption)
