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

> Aprende a configurar Token Vault.

# Configurar Token Vault

Una vez que un usuario se haya autenticado con un [proveedor externo compatible](/es/docs/secure/tokens/token-vault#supported-external-providers) y haya autorizado la conexión, tu aplicación puede acceder a Token Vault para intercambiar un token de Auth0 por el token de acceso de un proveedor externo.

Para configurar Token Vault, necesitas:

1. [Configurar cuentas conectadas para Token Vault](/es/docs/secure/tokens/token-vault/configure-token-vault#configure-connected-accounts-for-token-vault) para una conexión social o empresarial compatible.
2. [Configurar tu aplicación](#configure-application) con el tipo de concesión de Token Vault.
3. Configurar el intercambio de tokens para tu aplicación:
   * [Intercambio de token de actualización](#configure-refresh-token-exchange)
   * [Intercambio de token de acceso](#configure-access-token-exchange)

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si anteriormente configuraste tu política de MFA como **Always** en el Auth0 Dashboard, debes cambiarla a **Never** para obtener un token de acceso de Token Vault. De lo contrario, recibirás un error. Para obtener más información sobre las distintas políticas de MFA, consulta [Habilitar MFA en el Auth0 Dashboard](/es/docs/secure/multi-factor-authentication/enable-mfa#enable-mfa-in-the-auth0-dashboard).

  Si necesitas activar desafíos de MFA para flujos interactivos, habilita **Customize MFA Factors using Actions** al [configurar MFA para tu inquilino](/es/docs/secure/multi-factor-authentication/customize-mfa/customize-mfa-selection-universal-login#prepare-your-tenant). Después, puedes usar una Action para activar un desafío de MFA en función de la propiedad `event.transaction.protocol`. Para obtener más información, consulta [Personalizar la selección de MFA para Universal Login](/es/docs/secure/multi-factor-authentication/customize-mfa/customize-mfa-selection-universal-login).
</Callout>

<div id="configure-connected-accounts-for-token-vault">
  ## Configurar cuentas conectadas para Token Vault
</div>

Cuentas conectadas para Token Vault gestiona un perfil de usuario unificado de Auth0 vinculado a varias cuentas externas. A continuación, la aplicación recupera las credenciales almacenadas en Token Vault para interactuar con APIs externas en nombre del usuario.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Si la aplicación usa [Organizaciones](/es/docs/manage-users/organizations), configure la conexión y, a continuación, autentique al usuario con la organización de destino antes de iniciar el flujo de Cuentas conectadas. La cuenta conectada y los tokens almacenados siguen vinculados al perfil de Auth0 del usuario.
</Callout>

Puede configurar Cuentas conectadas para conexiones sociales y empresariales compatibles. Para obtener más información, consulte [Configurar cuentas conectadas](/es/docs/secure/tokens/token-vault/connected-accounts-for-token-vault#configure-connected-accounts).

<div id="configure-application">
  ## Configurar la aplicación
</div>

Configure su aplicación con el tipo de concesión Token Vault mediante <Tooltip tip="Management API: Un producto que permite a los clientes realizar tareas administrativas." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip> o <Tooltip tip="Auth0 Dashboard: El producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip>.

Solo determinados tipos de clientes pueden usar el tipo de concesión Token Vault:

1. El cliente debe ser propio, es decir, la propiedad `is_first_party` debe ser `true`.
2. El cliente debe ser confidencial y contar con un mecanismo de autenticación válido; es decir, la propiedad `token_endpoint_auth_method` no debe estar establecida en `none`.
3. El cliente debe ser compatible con OIDC; es decir, `oidc_conformant` debe ser `true`.

<Tabs>
  <Tab title="Auth0 Dashboard">
    1) Vaya a **Applications > Applications**.
    2) Seleccione la aplicación que quiere configurar.
    3) En **Advanced Settings > Grant Types**, seleccione el tipo de concesión **Token Vault**.
    4) Seleccione **Save Changes**.

    <Frame>
      <img src="https://mintcdn.com/translations/S4csL9vq6QUX5-Rr/docs/images/token-vault/configure_token_vault_grant_type.png?fit=max&auto=format&n=S4csL9vq6QUX5-Rr&q=85&s=2a416e1e8355934962d10b1c35d37d7e" alt="" width="1368" height="680" data-path="docs/images/token-vault/configure_token_vault_grant_type.png" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    Para habilitar Token Vault para una aplicación, haga una solicitud `PATCH` al endpoint [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) para agregar el tipo de concesión `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token` al objeto JSON del cliente:

    ```bash lines theme={null}
    curl --location --request PATCH 'https://{yourDomain}/api/v2/clients/{clientId}' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_ACCESS_TOKEN>' \
      --data '{
        "grant_types": [
          "authorization_code",
          "refresh_token",
          "urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token"
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="configure-token-exchange">
  ## Configurar el intercambio de tokens
</div>

Para llamar a las API de un proveedor externo, su aplicación debe intercambiar un token válido de Auth0 por un token de acceso del proveedor externo desde Token Vault. El tipo de token de Auth0 que se usa para el intercambio depende del tipo de cliente y del caso de uso. Para obtener más información, consulte [Intercambios de tokens compatibles](/es/docs/secure/tokens/token-vault#supported-token-exchanges).

<div id="configure-refresh-token-exchange">
  ### Configurar el intercambio de token de actualización
</div>

Para usar el [intercambio de token de actualización con Token Vault](/es/docs/secure/tokens/token-vault/refresh-token-exchange-with-token-vault), debe configurar su aplicación con los siguientes tipos de concesión:

* Código de autorización: Permite que su aplicación realice el inicio de sesión inicial del usuario, en el que intercambia un código de autorización temporal por un token de acceso de Auth0, un token de actualización y un ID Token.
* Token de actualización: Permite que su aplicación use un token de actualización de Auth0 de larga duración para solicitar un nuevo token de acceso de Auth0 sin que el usuario tenga que volver a iniciar sesión.
* Token Vault: Permite que su aplicación intercambie un token de actualización de Auth0 por el token de acceso de un proveedor externo almacenado en Token Vault.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Para configurar su aplicación para el intercambio de token de actualización:

    * Vaya a **Applications > Applications**.
    * Seleccione la aplicación que desea configurar.
    * En **Advanced Settings > Grant Types**, seleccione los tipos de concesión **Refresh Token**, **Authorization Code** y **Token Vault**.
    * Seleccione **Save Changes**.
  </Tab>

  <Tab title="Management API">
    Para configurar su aplicación para el intercambio de token de actualización, haga una llamada `PATCH` al endpoint [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) para agregar los tipos de concesión `refresh_token`, `authorization_code,` y `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token` al objeto JSON del cliente:

    ```bash lines theme={null}
    curl --location --request PATCH 'https://{yourDomain}/api/v2/clients/{clientId}' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_ACCESS_TOKEN>' \
      --data '{
        "grant_types": [
          "authorization_code",
          "refresh_token",
          "urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token"
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="configure-access-token-exchange">
  ### Configurar el intercambio de token de acceso
</div>

Para usar el [intercambio de token de acceso con Token Vault](/es/docs/secure/tokens/token-vault/access-token-exchange-with-token-vault), debe:

* [Configurar su SPA](#configure-your-spa) con el tipo de concesión `authorization_code`.
* [Crear una API de backend](#create-backend-api) para la que la SPA pueda solicitar un token de acceso de Auth0 especificándola como audiencia.
* [Crear un cliente de API personalizado](#create-custom-api-client) vinculado a la API de backend con el tipo de concesión de Token Vault habilitado.

<div id="configure-your-spa">
  #### Configure su SPA
</div>

Configure su SPA con el tipo de concesión `authorization_code`. Esto permite que la SPA solicite al Servidor de autorización de Auth0 un token de acceso de Auth0 con scope para la API de backend.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Para configurar su SPA con el tipo de concesión `authorization_code`:

    * Vaya a **Applications > Applications**.
    * Seleccione la aplicación que desea configurar.
    * En **Advanced Settings > Grant Types**, seleccione el tipo de concesión **Authorization Code**.
    * Seleccione **Save Changes**.
  </Tab>

  <Tab title="Management API">
    Para configurar su SPA, haga una llamada `PATCH` al endpoint [Update a Client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) para agregar el tipo de concesión `authorization_code` al objeto JSON del cliente:

    ```bash lines theme={null}
    curl --request PATCH 'https://{yourDomain}/api/v2/clients/{clientId}' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --data '{
        "grant_types": [
          "authorization_code"
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="create-backend-api">
  #### Crear API de backend
</div>

Cree una API de backend con un identificador único y los alcances deseados para realizar el intercambio del token de acceso con el Servidor de autorización de Auth0.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Para crear una API de backend en el Auth0 Dashboard:

    * Vaya a **Applications > APIs** y haga clic en **Create API**.
    * Para crear su API, siga las instrucciones de [Registrar APIs](/es/docs/get-started/auth0-overview/set-up-apis). **Nota:** Una vez que establezca un identificador para su API, no podrá cambiarlo.
    * Haga clic en **Create**.
    * Una vez creada la API, deberá agregarle alcances. Vaya a la pestaña **Permissions**. En **Add a Permission**, agregue sus alcances.
  </Tab>

  <Tab title="Management API">
    Para crear una API de backend mediante la Management API, haga una solicitud `POST` al endpoint `/resource-servers`:

    ```bash lines  theme={null}
    curl --request POST 'https://{yourDomain}/api/v2/resource-servers' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --data '{
        "name": "My API Resource Server",
        "identifier": "https://my-api.example.com",
        "scopes": [
          {
            "value": "read:calendar",
            "description": "Read calendar events"
          },
          {
            "value": "write:calendar",
            "description": "Write calendar events"
          }
        ]
      }'
    ```
  </Tab>
</Tabs>

<div id="create-custom-api-client">
  #### Crear un cliente de API personalizado
</div>

Para el intercambio de token de acceso, debe crear un cliente de API personalizado vinculado a la API de backend. La SPA podrá solicitar un token de acceso para la API de backend especificándola como audiencia en la solicitud de autorización al Servidor de autorización de Auth0. El cliente de API personalizado tiene el mismo identificador que su API de backend y tiene habilitado el tipo de concesión Token Vault.

Cuando la API de backend realiza el intercambio de token de acceso, se autentica pasando las credenciales del cliente de API personalizado al Servidor de autorización de Auth0, lo que demuestra que es la misma entidad que se registró en el Auth0 Dashboard.

<Tabs>
  <Tab title="Auth0 Dashboard">
    Para crear un cliente de API personalizado en el Auth0 Dashboard:

    * Vaya a **Applications > APIs** y seleccione su API de backend.
    * Seleccione **Add Application** e introduzca un nombre para la aplicación.
    * Haga clic en **Add**. Una vez que la aplicación se haya creado correctamente, haga clic en **Configure Application** y desplácese hasta **Application Properties**. El **Application Type** es un cliente de API personalizado.
    * En **Advanced Settings > Grant Types**, el tipo de concesión **Token Vault** ya debería estar habilitado para el cliente de API personalizado.

    <Frame>
      <img src="https://mintcdn.com/translations/S4csL9vq6QUX5-Rr/docs/images/token-vault/create_custom_api_client.png?fit=max&auto=format&n=S4csL9vq6QUX5-Rr&q=85&s=cb602bcdbbb8809b88c45f91be3ee502" alt="" width="1392" height="870" data-path="docs/images/token-vault/create_custom_api_client.png" />
    </Frame>
  </Tab>

  <Tab title="Management API">
    La siguiente muestra de código crea un cliente de API personalizado con el mismo identificador que su API de backend y agrega el tipo de concesión Token Vault:

    ```bash lines theme={null}
    curl --request POST 'https://{yourDomain}/api/v2/clients' \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer <YOUR_MANAGEMENT_API_TOKEN>' \
      --data '{
        "name": "Custom API Client",
        "app_type": "resource_server",
        "resource_server_identifier": "https://my-api.example.com",
        "grant_types": [
          "urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token"
        ]
      }'
    ```

    | Parámetro                    | Descripción                                                                                                                                                                                                      |
    | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
    | `name`                       | Nombre de su cliente de API personalizado.                                                                                                                                                                       |
    | `app_type`                   | El tipo de aplicación de su cliente de API personalizado. Para registrar el cliente como servidor de recursos, establézcalo en `resource_server`.                                                                |
    | `resource_server_identifier` | El identificador único de su cliente de API personalizado. Establézcalo en la audiencia de su API de backend; es decir, `https://my-api.example.com.`                                                            |
    | `grant_types`                | Los tipos de concesión habilitados para su cliente de API personalizado. Establézcalo en el tipo de concesión Token Vault: `urn:auth0:params:oauth:grant-type:token-exchange:federated-connection-access-token`. |
  </Tab>
</Tabs>

Una vez que haya creado correctamente el cliente de API personalizado, el usuario será redirigido a este en lugar de a la SPA después de iniciar sesión.
