> ## 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 llamar a su API con el flujo Custom Token Exchange.

# Llame a su API con el flujo Custom Token Exchange

Para usar Custom Token Exchange, haga una solicitud `POST` al endpoint `/oauth/token` con los siguientes parámetros:

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Recuerde que los tokens de sujeto y de actor usados con Custom Token Exchange pueden tener cualquier formato o tipo, siempre que el código de su Action pueda interpretarlos. Debe implementar una validación robusta de los tokens que reciba y acepte. Si no lo hace, se expone a distintos vectores de ataque, como la suplantación o los ataques de repetición, lo que puede permitir que actores maliciosos se autentiquen con el ID de usuario de otra persona o actúen en su nombre sin autorización.

  Cada `subject_token_type` se asigna a un perfil de Custom Token Exchange y está asociado a una Action que se ejecutará para controlar esa transacción.
</Callout>

| Parámetro            | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `grant_type`         | Para Custom Token Exchange, use `urn:ietf:params:oauth:grant-type:token-exchange`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `subject_token_type` | El tipo del token de sujeto. Para Custom Token Exchange, puede ser cualquier URI dentro de un espacio de nombres de su propiedad, como `http://acme.com/legacy-token` o `urn:acme:legacy-token`.<br /><br />Los siguientes espacios de nombres están reservados y no se pueden usar:<ul><li>`http://auth0.com`</li><li>`https://auth0.com`</li><li>`http://okta.com`</li><li>`https://okta.com`</li><li>`urn:ietf`</li><li>`urn:auth0`</li><li>`urn:okta`</li></ul>                                                                                                                                                                                       |
| `subject_token`      | El token de sujeto, que su Action debe validar y usar para identificar al usuario.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| `client_id`          | El ID de cliente de la aplicación que está usando para Token Exchange. Al igual que con otros tipos de grant, también puede pasar el ID de cliente en el encabezado Authorization mediante HTTP Basic Auth.                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `client_secret`      | El secreto del cliente de la aplicación que está usando para Token Exchange. Al igual que con otros tipos de grant, también puede pasar el secreto del cliente en el encabezado Authorization mediante HTTP Basic Auth.<br /><br />También hay otras alternativas disponibles, como se explica en la [documentación de referencia de Authentication API de Auth0](https://auth0.com/docs/api/authentication#authentication-methods).<br /><br />Tenga en cuenta que las aplicaciones públicas también pueden usar Custom Token Exchange. En ese caso, asegúrese de leer [Protección contra ataques](#attack-protection).                                  |
| `audience`           | El identificador de API definido en Auth0. Se usará la audiencia predeterminada del inquilino cuando no esté presente, según se configure en [Configuración del inquilino](/es/docs/get-started/tenant-settings).                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `scope`              | (Opcional) El parámetro scope de OAuth2.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `organization`       | (Opcional) El identificador de la organización con la que desea asociar la solicitud. Como alternativa, puede especificar un nombre de organización si se permite [Use Organization Names in Authentication API](/es/docs/manage-users/organizations/configure-organizations/use-org-name-authentication-api) para su inquilino. Para obtener más información sobre cómo se procesa la solicitud, consulte el [método de API api.authentication.setOrganization()](/es/docs/customize/actions/explore-triggers/signup-and-login-triggers/custom-token-exchange-trigger/custom-token-exchange-api-object#api-authentication-setorganization-organization). |
| `actor_token`        | (Opcional) Un token que identifica al actor o al principal que realiza la delegación en nombre del usuario sujeto. Debe proporcionarse junto con `actor_token_type`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `actor_token_type`   | (Opcional) El tipo del token de actor. Debe proporcionarse junto con `actor_token`. Para los tokens de ID de Auth0, use `urn:ietf:params:oauth:token-type:id_token` para la validación automática del lado del servidor. Para otros valores, siga las mismas restricciones de espacio de nombres que para `subject_token_type`.                                                                                                                                                                                                                                                                                                                           |

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Cuando se establece un actor para la transacción, no se emiten tokens de actualización independientemente de los alcances solicitados. El scope `offline_access` se excluye de la respuesta. Esto es intencional: los tokens delegados no deben ir más allá del intercambio inmediato, lo que garantiza que cada solicitud de acceso posterior pase por la lógica de autorización de la Action de CTE para volver a validar la delegación.

  Su Action de CTE es responsable de validar de forma segura el `actor_token` aplicando el mismo nivel de rigor (por ejemplo, verificación de firma criptográfica) que aplicaría al `subject_token`. Cuando `actor_token_type` es `urn:ietf:params:oauth:token-type:id_token`, Auth0 realiza esta validación automáticamente.
</Callout>

Los demás parámetros de extensión que no se indican arriba se incluyen en `event.request.body` en la Action correspondiente.

<div id="sample-request">
  ## Solicitud de ejemplo
</div>

```bash lines theme={null}
curl --location 'https://{yourDomain}/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
--data-urlencode 'audience=https://api.acme.com' \
--data-urlencode 'scopes=openid offline_access acme-scope1 acme-scope2' \
--data-urlencode 'subject_token_type=urn:acme:external-idp-migration' \
--data-urlencode 'subject_token=t8e7S2D9trQm73e .... iqBR3GjxDtbDVjpfQU' \
--data-urlencode 'client_id=<YOUR_CLIENT_ID>' \
--data-urlencode 'client_secret=<YOUR_CLIENT_SECRET>'
--data-urlencode 'organization=periscope-acme'
```

<div id="sample-request-with-actor-token">
  ## Ejemplo de solicitud con token de actor
</div>

Al realizar un intercambio de autorización delegada, incluya `actor_token` y `actor_token_type`:

```bash lines theme={null}
curl --location 'https://{yourDomain}/oauth/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=urn:ietf:params:oauth:grant-type:token-exchange' \
--data-urlencode 'audience=https://api.acme.com' \
--data-urlencode 'scopes=openid acme-scope1 acme-scope2' \
--data-urlencode 'subject_token_type=urn:acme:legacy-token' \
--data-urlencode 'subject_token=t8e7S2D9trQm73e .... iqBR3GjxDtbDVjpfQU' \
--data-urlencode 'actor_token=eyJhbGciOiJSUzI1NiI .... kXdF9tZ3c' \
--data-urlencode 'actor_token_type=urn:ietf:params:oauth:token-type:id_token' \
--data-urlencode 'client_id=<YOUR_CLIENT_ID>' \
--data-urlencode 'client_secret=<YOUR_CLIENT_SECRET>'
```
