> ## 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 implementar la autenticación de cliente con JWT de clave privada para sus conexiones empresariales.

# Autenticación de cliente con JWT de clave privada para conexiones de Okta y OIDC

La autenticación de cliente con clave privada <Tooltip tip="JSON Web Token (JWT): Formato estándar de ID Token (y, con frecuencia, formato de Token de acceso) utilizado para representar reclamaciones de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWT">JWT</Tooltip> es un método alternativo de autenticación de cliente para las conexiones empresariales de <Tooltip tip="JSON Web Token (JWT): Formato estándar de ID Token (y, con frecuencia, formato de Token de acceso) utilizado para representar reclamaciones de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=OpenID">OpenID</Tooltip> Connect (OIDC) y Okta Workforce. Aunque la autenticación de cliente suele realizarse mediante el envío de un <Tooltip tip="Client Secret: Secreto utilizado por un cliente (aplicación) para autenticarse con el Servidor de autorización; solo el cliente y el Servidor de autorización deben conocerlo, y debe ser lo suficientemente aleatorio para que no se pueda adivinar." cta="Ver glosario" href="/es/docs/glossary?term=client+secret">secreto del cliente</Tooltip> compartido, la autenticación de cliente con JWT de clave privada utiliza en su lugar un JWT firmado para mejorar la seguridad de la aplicación.

Al usar esta función, puede evitar algunas deficiencias de seguridad comunes que suelen observarse con la autenticación estándar mediante secreto del cliente, como:

* Un mayor riesgo de interceptación y reutilización, ya que los secretos del cliente deben transmitirse entre las partes en cada solicitud.
* Mecanismos limitados para aplicar la expiración y evitar la reutilización por parte de actores maliciosos.
* Un mayor riesgo de filtraciones o exposición debido a que ambas partes conservan el secreto del cliente.

Puede configurar la autenticación de cliente con JWT de clave privada para sus conexiones empresariales de OIDC y Okta Workforce mediante el <Tooltip tip="Auth0 Dashboard: El principal producto de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> o la <Tooltip tip="Auth0 Dashboard: El principal producto de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip>.

<div id="how-it-works">
  ## Cómo funciona
</div>

El flujo de conexión OIDC utiliza endpoints autenticados, como `/oauth/token` o `/oauth/par`, para verificar la identidad de un cliente ante el <Tooltip tip="Servidor de autorización: servidor centralizado que contribuye a definir los límites del acceso de un usuario. Por ejemplo, su servidor de autorización puede controlar los datos, las tareas y las funciones disponibles para un usuario." cta="Ver glosario" href="/es/docs/glossary?term=authorization+server">servidor de autorización</Tooltip> o proveedor de OpenID. Con Private Key JWT Client Authentication, se envía una aserción JWT del cliente firmada al proveedor de OpenID en lugar de un secreto del cliente.

La aserción JWT del cliente contiene los siguientes claims:

* Un `aud` (<Tooltip tip="Audiencia: identificador único de la audiencia para un token emitido. Llamado aud en un token, su valor contiene el ID de una aplicación (ID de cliente) para un ID Token o de una API (identificador de API) para un token de acceso." cta="Ver glosario" href="/es/docs/glossary?term=audience">audiencia</Tooltip>) que identifica el <Tooltip tip="Audiencia: identificador único de la audiencia para un token emitido. Llamado aud en un token, su valor contiene el ID de una aplicación (ID de cliente) para un ID Token o de una API (identificador de API) para un token de acceso." cta="Ver glosario" href="/es/docs/glossary?term=token+endpoint">endpoint de token</Tooltip> del proveedor de OpenID.
* Un `jti` (ID de JWT) para permitir el uso único o la protección contra repeticiones.
* Un `exp` (hora de expiración) que limita la ventana de validez del token.
* Un `sub` e `iss` que identifican el <Tooltip tip="ID de cliente: valor de identificación otorgado a su recurso registrado por Auth0." cta="Ver glosario" href="/es/docs/glossary?term=client+ID">ID de cliente</Tooltip>.

Private Key JWT Client Authentication ofrece un método de autenticación más seguro, ya que elimina el uso de secretos del cliente compartidos. En su lugar, el JWT se firma con la clave privada del cliente, y el proveedor de OpenID solo tiene acceso a la clave pública.

<div id="private-key-jwt-client-authentication-flow">
  ### Flujo de autenticación de cliente con JWT de clave privada
</div>

Después de que un usuario complete la autenticación con un <Tooltip tip="Proveedor de identidad (IdP): servicio que almacena y administra identidades digitales." cta="Ver glosario" href="/es/docs/glossary?term=identity+provider">proveedor de identidad</Tooltip> (IdP) externo, se le redirige a Auth0 con un código de autorización que se canjea por tokens en el endpoint de token del proveedor de OpenID. Cuando JWT de clave privada está habilitado para una conexión, la llamada al endpoint de token del proveedor de OpenID usa una aserción de cliente en lugar de un secreto del cliente, para ofrecer una autenticación más segura.

Los siguientes pasos muestran un flujo típico de autenticación de cliente con JWT de clave privada.

<Frame>
  <img src="https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4JOxbdG7aweqpDHCJ8VOZq/aea18936c0cbdbfbb39d0cd79af3987e/Client_Assertion_JWT_-_Diagram.png?fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=d8e1153c1ed7789661591011b69caf3e" alt="Un diagrama que representa el flujo de autenticación de cliente con JWT de clave privada. " width="1602" height="1284" data-path="docs/images/cdy7uua7fh8z/4JOxbdG7aweqpDHCJ8VOZq/aea18936c0cbdbfbb39d0cd79af3987e/Client_Assertion_JWT_-_Diagram.png" />
</Frame>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Para completar este flujo, primero debe configurar una conexión OIDC u Okta Workforce, nueva o existente, con `token_endpoint_auth_method=private_key_jwt` mediante Auth0 Dashboard o la Management API. Para obtener más información, consulte la sección [Configurar la autenticación de cliente con JWT de clave privada](#configure-private-key-jwt-client-authentication).
</Callout>

1. Después de configurar su conexión, Auth0 genera y almacena automáticamente dos pares de claves públicas y privadas.

   * Un par de claves corresponde al conjunto activo `current`, mientras que el otro se etiqueta como `next` para admitir la [rotación de claves](#rotate-signing-keys).
2. Según su IdP, a continuación debe hacer una de estas acciones:

   * Descargar la clave pública `current` y cargar el archivo en el Servidor de autorización, o bien:
   * Copiar y pegar el [`jwks_uri`](#retrieve-signing-keys) en el Servidor de autorización.
3. Un usuario realiza una acción que requiere autenticación, como iniciar sesión en su aplicación.
4. Auth0 envía una solicitud al Servidor de autorización para iniciar la autenticación.
5. El Servidor de autorización muestra al usuario las pantallas de autenticación y consentimiento.
6. El usuario se autentica y otorga su consentimiento al Servidor de autorización.
7. El Servidor de autorización envía un código de autorización a Auth0.
8. Auth0 genera un JWT de aserción de cliente y lo firma con la clave privada `current`.
9. Auth0 envía el JWT de aserción de cliente al Servidor de autorización.
10. El Servidor de autorización busca el cliente en función del `client_id` proporcionado.
11. El Servidor de autorización recupera las claves públicas de Auth0 si se proporcionó un `jwks_uri`; de lo contrario, identifica la clave pública registrada en el paso 2.
12. Si se solicitó el `jwks_uri`, Auth0 devuelve las claves públicas como JWKS.
13. El Servidor de autorización valida el JWT verificando la firma con la clave pública `current`, identificada por `kid` en el encabezado del JWT `client_assertion`.
14. El Servidor de autorización genera un token de acceso.
15. El Servidor de autorización envía el token de acceso a Auth0.
16. Con el token de acceso, Auth0 solicita un recurso al Servidor de recursos.
17. El Servidor de recursos proporciona el recurso para completar el flujo.

<div id="configure-private-key-jwt-client-authentication">
  ## Configurar la autenticación de cliente con JWT de clave privada
</div>

Puede configurar las conexiones empresariales de OIDC y Okta Workforce para usar la autenticación de cliente con JWT de clave privada mediante Auth0 Dashboard o Management API. A continuación, se indican los pasos para cada método.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  * Auth0 genera automáticamente pares de claves de firma públicas y privadas para cada conexión.
  * Puede usar los siguientes algoritmos para firmar JWT de aserción de cliente: `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `ES256` y `ES384` para las conexiones empresariales de Okta y OIDC. El valor predeterminado es `RS256` si no se especifica.
  * Los JWT firmados vencen automáticamente después de 60 segundos.
</Callout>

<div id="auth0-dashboard">
  #### Auth0 Dashboard
</div>

Puede usar Auth0 Dashboard para configurar la autenticación de cliente con JWT de clave privada en conexiones OIDC y Okta Workforce, tanto nuevas como existentes.

<Tabs>
  <Tab title="Nueva conexión">
    1. En Auth0 Dashboard, vaya a [Authentication > Enterprise](https://manage.auth0.com/#/connections/enterprise).
    2. Junto a **OpenID Connect** u **Okta Workforce**, seleccione **Create**.
    3. En la sección **General**, proporcione los datos de la nueva conexión, incluidos su nombre y la URL de detección.
    4. Configure los siguientes campos para habilitar Private Key JWT:

       * Establezca **Communication Channel** en **Back Channel**.
       * Establezca **Authentication Method** en **Private Key JWT**.
    5. Seleccione **Create** para guardar la nueva conexión.
  </Tab>

  <Tab title="Conexión existente">
    1. En Auth0 Dashboard, vaya a [Authentication > Enterprise](https://manage.auth0.com/#/connections/enterprise).
    2. Junto a **OpenID Connect** u **Okta Workforce**, seleccione **Browse**.
    3. Elija la conexión correspondiente. Luego, vaya a la pestaña **Credentials**.
    4. En **Authentication Settings**, configure lo siguiente:

       * Establezca **Communication Channel** en **Back Channel**.
       * Establezca **Authentication Method** en **Private Key JWT**.
    5. Seleccione **Save**.
    6. En la ventana emergente de confirmación, seleccione **Change** para aplicar los cambios.
  </Tab>
</Tabs>

<div id="management-api">
  #### Management API
</div>

Puede usar la Management API para configurar la autenticación de cliente con JWT de clave privada para conexiones OIDC nuevas y existentes.

<Tabs>
  <Tab title="Nueva conexión">
    Para crear una nueva conexión OIDC que use autenticación de cliente con JWT de clave privada, llame al endpoint [Create a Connection](https://auth0.com/docs/api/management/v2/connections/post-connections) con las siguientes propiedades de `connection.options` establecidas según corresponda:

    | Propiedad                         | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `type`                            | Establezca esta propiedad en `back_channel`.                                                                                                                                                                                                                                                                                                                                                                                                                    |
    | `token_endpoint_auth_method`      | Método de autenticación usado en el endpoint de token del proveedor de identidad. Establézcalo en `private_key_jwt` para usar una aserción JWT firmada y mejorar la seguridad, o en `client_secret_post` para enviar credenciales en el cuerpo de la solicitud. El valor predeterminado es `client_secret_post`. Se aplica solo a las estrategias `oidc` y `okta`.                                                                                              |
    | `token_endpoint_auth_signing_alg` | Opcional. Algoritmo usado para firmar aserciones de cliente. Valores aceptados: `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `ES256`, `ES384`. El valor predeterminado es `RS256` si no se establece. Se aplica solo a las estrategias `oidc` y `okta`.                                                                                                                                                                                                         |
    | `id_token_signed_response_algs`   | Opcional. Lista de algoritmos permitidos para verificar los tokens de ID emitidos por el proveedor de identidad. Cuando se establece, Auth0 rechaza los tokens de ID firmados con cualquier algoritmo que no esté en esta lista. Valores aceptados: `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `ES256`, `ES384`. Si no se establece, Auth0 acepta tokens de ID firmados con cualquier algoritmo compatible. Se aplica solo a las estrategias `oidc` y `okta`. |
    | `token_endpoint_jwtca_aud_format` | Opcional. Especifica el formato del claim `aud` (audiencia) en el JWT usado para la autenticación del cliente en el endpoint de token. Establézcalo en `issuer` para usar la URL del emisor de OIDC, o en `token_endpoint` para usar la URL del endpoint de token. El valor predeterminado es `token_endpoint`.                                                                                                                                                 |

    **Ejemplo de llamada POST**

    ```js lines theme={null}
    POST /api2/connections

    {
      strategy: 'oidc',
      options: {
        type: "back_channel",
        token_endpoint_auth_method: "private_key_jwt",
        token_endpoint_auth_signing_alg: "RS256",
        id_token_signed_response_algs: ["RS256", "RS384"]
      },
      …
    }
    ```
  </Tab>

  <Tab title="Conexión existente">
    Para modificar una conexión OIDC existente para que use autenticación de cliente con JWT de clave privada, llame al endpoint [Update a Connection](https://auth0.com/docs/api/management/v2/connections/patch-connections-by-id) con las siguientes propiedades de `connection.options` establecidas según corresponda:

    | Propiedad                         | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
    | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `type`                            | Establezca esta propiedad en `back_channel`.                                                                                                                                                                                                                                                                                                                                                                                                                    |
    | `token_endpoint_auth_method`      | Método de autenticación usado en el endpoint de token del proveedor de identidad. Establézcalo en `private_key_jwt` para usar una aserción JWT firmada y mejorar la seguridad, o en `client_secret_post` para enviar credenciales en el cuerpo de la solicitud. El valor predeterminado es `client_secret_post`. Se aplica solo a las estrategias `oidc` y `okta`.                                                                                              |
    | `token_endpoint_auth_signing_alg` | Opcional. Algoritmo usado para firmar aserciones de cliente. Valores aceptados: `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `ES256`, `ES384`. El valor predeterminado es `RS256` si no se establece. Se aplica solo a las estrategias `oidc` y `okta`.                                                                                                                                                                                                         |
    | `id_token_signed_response_algs`   | Opcional. Lista de algoritmos permitidos para verificar los tokens de ID emitidos por el proveedor de identidad. Cuando se establece, Auth0 rechaza los tokens de ID firmados con cualquier algoritmo que no esté en esta lista. Valores aceptados: `RS256`, `RS384`, `RS512`, `PS256`, `PS384`, `ES256`, `ES384`. Si no se establece, Auth0 acepta tokens de ID firmados con cualquier algoritmo compatible. Se aplica solo a las estrategias `oidc` y `okta`. |
    | `token_endpoint_jwtca_aud_format` | Opcional. Especifica el formato del claim `aud` (audiencia) en el JWT usado para la autenticación del cliente en el endpoint de token. Establézcalo en `issuer` para usar la URL del emisor de OIDC, o en `token_endpoint` para usar la URL del endpoint de token. El valor predeterminado es `token_endpoint`.                                                                                                                                                 |

    **Ejemplo de llamada PATCH**

    ```js lines theme={null}
    PATCH /api2/connections/{id}

    {
      strategy: 'oidc',
      options: {
        type: "back_channel",
        token_endpoint_auth_method: "private_key_jwt",
        token_endpoint_auth_signing_alg: "RS256",
        id_token_signed_response_algs: ["RS256", "RS384"]
      },
      …
    }
    ```
  </Tab>
</Tabs>

<div id="retrieve-signing-keys">
  ## Recuperar claves de firma
</div>

Después de configurar su conexión para usar la autenticación de cliente con JWT de clave privada, puede recuperar sus claves públicas a través del Auth0 Dashboard, la Management API o una URI pública de JWKS.

<AccordionGroup>
  <Accordion title="Auth0 Dashboard">
    Para recuperar las claves de firma a través del Auth0 Dashboard:

    1. Vaya a [Authentication > Enterprise](https://manage.auth0.com/#/connections/enterprise).
    2. Junto a **OpenID Connect** u **Okta Workforce**, seleccione **Browse**.
    3. Elija la conexión correspondiente. Luego, abra la pestaña **Credentials**.
    4. Busque la sección **Credentials** y seleccione el icono **Download** junto a la clave de firma correspondiente.
  </Accordion>

  <Accordion title="Management API">
    Para ver las claves públicas a través de la Management API, llame al endpoint [Get connection keys](https://auth0.com/docs/api/management/v2/connections/get-keys) con el id de su conexión.

    <Warning>
      El uso de este endpoint requiere el scope `read:connections_keys`.
    </Warning>

    **Ejemplo de llamada GET**

    ```js lines theme={null}
    GET /api2/connections/{id}/keys
    ```

    **Ejemplo de respuesta**

    ```js lines expandable theme={null}
    {
        cert: "-----BEGIN CERTIFICATE-----
    MIIDDTCCAfWgAwIBAgIJP...Ek=
    -----END CERTIFICATE-----",
        pkcs7: "-----BEGIN PKCS7-----
    MIIDPAYJKoZIhvcNAQcCo...AA==
    -----END PKCS7-----
    ",
        kid: "E4CXqUP6r92yo0f_sdkdC",
        next: true,
        fingerprint: "7F:33:86:D9:4A:98:B2:DC:B0:41:74:54:DA:31:E7:74:42:32:96:8C",
        thumbprint: "7F3386D94A98B2DCB0417454DA31E7744232968C"
      }, 
      {
        cert: "-----BEGIN CERTIFICATE-----
    MIIDDTCCAfWgAwIBAgI...Ss=
    -----END CERTIFICATE-----",
        pkcs7: "-----BEGIN PKCS7-----
    MIIDPAYJKoZIhvcNAQ...AA==
    -----END PKCS7-----
    ",
        kid: "_4WuXpXlwwmSE65saKWDM",
        current: true,
        current_since: "2025-01-24T08:50:06.662Z",
        fingerprint: "33:7D:6F:35:46:31:AD:6E:69:43:01:A2:77:DF:8E:73:64:F6:E8:5B",
        thumbprint: "337D6F354631AD6E694301A277DF8E7364F6E85B"
      }, 
      {
        cert: "-----BEGIN CERTIFICATE-----
    MIIDDTCCAfWgAwIBA...6Q=
    -----END CERTIFICATE-----",
        pkcs7: "-----BEGIN PKCS7-----
    MIIDPAYJKoZIhvcN...AA==
    -----END PKCS7-----
    ",
        kid: "roUD9STeDy9qBTx5XjaTz",
        previous: true,
        current_since: "2025-01-24T08:48:51.523Z",
        current_until: "2025-01-24T08:50:06.663Z",
        fingerprint: "44:D3:DD:3B:63:99:59:9A:39:D9:F4:F0:4F:1B:AC:BB:18:72:40:5C",
        thumbprint: "44D3DD3B6399599A39D9F4F04F1BACBB1872405C"
      }
    ```
  </Accordion>

  <Accordion title="URI pública de JWKS">
    Algunos Proveedores de identidad permiten proporcionar claves públicas para private\_key\_jwt en forma de una URI pública de JWKS (JSON Web Key Set).

    Si se han generado claves públicas para una conexión, puede recuperarlas agregando la siguiente URI a la configuración de su IdP:

    ```http wrap lines theme={null}
    https://{auth0 domain}/oauth/connection/{connection name}/.well-known/jwks.json
    ```

    <Warning>
      Las URI de JWKS se contabilizan dentro de los límites globales de tasa. Puede usar el almacenamiento en caché de las claves públicas para evitar alcanzarlos. Como práctica recomendada, Auth0 recomienda un intervalo de caché de al menos 5-10 minutos para evitar llamar al endpoint de la URI de JWKS en cada intento de inicio de sesión.
    </Warning>
  </Accordion>
</AccordionGroup>

<div id="rotate-signing-keys">
  ## Rotación de claves de firma
</div>

La autenticación de cliente con JWT de clave privada admite la rotación de claves de firma para aumentar la seguridad frente al carácter estático y de larga duración de los secretos compartidos del cliente. Rotar las claves de firma mejora la seguridad al limitar el tiempo de exposición de cada clave, lo que reduce la ventana de oportunidad para que un atacante pueda comprometerla. También permite responder con rapidez ante un incidente de seguridad.

Para evitar interrupciones, Auth0 recomienda rotar las claves de firma al cabo de un año. Puede usar tanto el Auth0 Dashboard como la Management API para rotar las claves de firma:

<AccordionGroup>
  <Accordion title="Auth0 Dashboard">
    Para rotar sus claves de firma desde el Auth0 Dashboard:

    1. Vaya a [Authentication > Enterprise](https://manage.auth0.com/#/connections/enterprise).
    2. Junto a **OpenID Connect** u **Okta Workforce**, seleccione **Browse**.
    3. Elija la conexión correspondiente. Después, abra la pestaña **Credentials**.
    4. En la sección **Credentials**, seleccione **Rotate Keys**.
    5. En la ventana emergente, seleccione **Save** para confirmar la rotación.

    Después de la rotación, cualquier JWT en tránsito firmado con la clave anterior queda inactivo de inmediato y puede no superar la verificación con su IdP.
  </Accordion>

  <Accordion title="Management API">
    Para ver las claves públicas mediante la Management API, llame al endpoint Rotate Connection Signing Keys con el ID de su conexión.

    <Warning>
      El uso de este endpoint requiere los alcances `create:connections_keys` y `update:connections_keys`.
    </Warning>

    ```js lines theme={null}
    POST /v2/connections/{id}/keys/rotate
    ```

    Después de la rotación, cualquier JWT en tránsito firmado con la clave anterior queda inactivo de inmediato y puede no superar la verificación con su IdP.
  </Accordion>
</AccordionGroup>

<Card title="Comprender la rotación de claves">
  En su conexión OIDC u Okta Workforce, sus claves de firma tienen asignado uno de los siguientes estados:

  * **Current**: La clave de firma que la aplicación usa actualmente.
  * **Next**: La siguiente clave de firma que usará la aplicación una vez que se revoque la clave actual.
  * **Previous**: Una clave de firma vencida o revocada por algún otro motivo que ya no se usa.

  Cuando se habilita por primera vez la autenticación de cliente con JWT de clave privada para una conexión, solo se genera un par de claves `current` y `next`. Una clave solo se marca como `previous` después de que se produce una rotación.

  Al rotar las claves de firma, se producen los siguientes cambios:

  1. La clave `current` se elimina y se revoca, y cualquier JWT firmado con esta clave no superará la verificación con el IdP si el IdP se configuró con `jwks_uri`.
  2. A la clave `current` se le asigna el estado `previous`.
  3. La clave `next` pasa a ser la clave activa y recibe el estado `current`. A partir de ese momento, los JWT de aserción de cliente se firmarán con esta clave.
  4. Se genera automáticamente una nueva clave de firma para reemplazar la clave rotada. La nueva clave de firma recibe el estado `next`.
</Card>

<div id="learn-more">
  ## Más información
</div>

* [Conecta tu aplicación de Auth0 con la conexión empresarial de Okta Workforce](/es/docs/authenticate/identity-providers/enterprise-identity-providers/okta)
* [Conéctate a un Proveedor de identidad OpenID Connect](/es/docs/authenticate/identity-providers/enterprise-identity-providers/oidc)
