> ## 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.

> Aprenda a configurar JSON Web Encryption (JWE) para una API.

# Configurar JSON Web Encryption (JWE)

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Para usar las funciones de Highly Regulated Identity, debe tener un Enterprise Plan con el add-on Highly Regulated Identity. Consulte [Auth0 Pricing](https://auth0.com/pricing/) para obtener más información.
</Callout>

De forma predeterminada, Auth0 emite <Tooltip tip="Token de acceso: Credencial de autorización, en forma de una cadena opaca o un JWT, que se usa para acceder a una API." cta="Ver glosario" href="/es/docs/glossary?term=access+tokens">tokens de acceso</Tooltip> con formato de [JSON Web Token (JWT)](/es/docs/secure/tokens/json-web-tokens) firmados, lo que significa que, aunque su integridad está protegida, los clientes y otros intermediarios aún pueden inspeccionarlos. Esto puede provocar una pérdida de privacidad de la información en datos que solo deben exponerse a un <Tooltip tip="Resource Server: Servidor que aloja recursos protegidos. Los servidores de recursos aceptan y responden a solicitudes de recursos protegidos." cta="Ver glosario" href="/es/docs/glossary?term=resource+server">servidor de recursos</Tooltip>.

Para evitar la inspección no autorizada de los tokens de acceso, Auth0 admite el uso de tokens de acceso <Tooltip tip="JSON Web Token (JWT): Formato estándar de ID Token (y, con frecuencia, formato de Token de acceso) usado para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWT">JWT</Tooltip> anidados, donde la información de acceso se firma en un JWT y luego se cifra y se representa mediante JSON Web Encryption (JWE). Se espera que los servidores de recursos descifren estos tokens de acceso y verifiquen la firma de la carga útil del JWT, mientras que la información permanece opaca para cualquier otra parte.

<div id="generate-rsa-key-pair">
  ## Generar un par de claves RSA
</div>

Antes de configurar una API para usar JWE, debe [generar un par de claves RSA](/es/docs/secure/application-credentials/generate-rsa-key-pair).

La clave privada debe mantenerse en secreto. Cargue la clave pública en Auth0 codificada en formato PEM, como se describe en [Generar un par de claves RSA](/es/docs/secure/application-credentials/generate-rsa-key-pair). Solo el servidor de recursos o el servidor de API pueden acceder de forma segura a la clave privada para descifrar el token de acceso.

<div id="configure-jwe-for-an-api">
  ## Configurar JWE para una API
</div>

<Tabs>
  <Tab title="Auth0 Dashboard">
    Use el [Auth0 Dashboard](https://manage.auth0.com/) para configurar JWE para su API. Para empezar, active el interruptor **JSON Web Encryption (JWE)** en **Token Settings** de su 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>

    Cuando se le solicite, agregue una clave de JSON Web Encryption (JWE):

    * Introduzca un nombre descriptivo para identificarla fácilmente.
    * Cargue un certificado con la clave pública codificada en formato PEM.
    * Seleccione el algoritmo de cifrado.
    * (Opcional) Introduzca un identificador de clave.

    Haga clic en **Add** para guardar la clave JWE, lo que generará una huella digital del certificado.
  </Tab>

  <Tab title="Management API">
    Use la [Auth0 Management API](https://auth0.com/docs/api/management/v2) para configurar JWE para un servidor de recursos o un servidor de API. Debe configurar JWE para cada API, por lo que cada una tendrá su propia clave pública de cifrado.

    La siguiente solicitud POST configura una nueva API para recibir tokens de acceso cifrados:

    ```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}"
        }
      }
    }'
    ```

    La siguiente tabla explica qué significan los distintos parámetros:

    | Parámetro        | ¿Obligatorio? | Descripción                                                                                                                                                                       |
    | ---------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `apiName`        | Obligatorio   | El nombre de su nueva API.                                                                                                                                                        |
    | `apiIdentifier`  | Obligatorio   | El identificador único de su API. Se utilizará como la audiencia de su token.                                                                                                     |
    | `credentialName` | Opcional      | El nombre de su clave pública.                                                                                                                                                    |
    | `pem`            | Obligatorio   | Clave pública codificada en formato PEM.                                                                                                                                          |
    | `alg`            | Obligatorio   | El algoritmo de cifrado debe ser `RSA-OAEP-256`, `RSA-OAEP-384` o `RSA-OAEP-512`.                                                                                                 |
    | `kid`            | Opcional      | El identificador que se usa para escribir en el encabezado `kid` de su token JWE. Puede usarse para identificar la clave utilizada para el cifrado durante la rotación de claves. |

    La respuesta contiene la propiedad `id`, que identifica de forma única el servidor de recursos. La respuesta también contiene un campo `thumbprint_sha256` generado que puede usarse para identificar la credencial. Auth0 no devolverá material de clave después de la creación inicial (en este caso, su PEM).

    Hay muchas formas de generar `thumbprint_sha256`. Para obtener más información, consulte [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-).

    Para asegurarse de que generó el `thumbprint_sha256` correcto, puede usar el siguiente ejemplo de código de Node.js para extraer la huella digital:

    ```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">
  ## Más información
</div>

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