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

> Configuración de Auth0 para el escenario de arquitectura de servidor + API

# Configuración de Auth0 (Aplicaciones de servidor + API)

En esta sección, revisaremos la configuración de ExampleCo en el [Auth0 Dashboard](https://manage.auth0.com/#).

<div id="configure-the-api">
  ## Configurar la API
</div>

Para proteger una API, debe registrarla mediante el <Tooltip tip="Auth0 Dashboard: el producto principal de Auth0 para configurar sus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>. Siga las instrucciones de [Registrar API](/es/docs/get-started/auth0-overview/set-up-apis) para configurar la API de Timesheets.

<div id="json-web-token-profile">
  ### Perfil del JSON Web Token
</div>

<Tooltip tip="Token de acceso: credencial de autorización, en forma de cadena opaca o JWT, utilizada para acceder a una API." cta="Ver glosario" href="/es/docs/glossary?term=OAuth+2.0">OAuth 2.0</Tooltip> define los tipos de perfiles, o dialectos, de un <Tooltip tip="OAuth 2.0: marco de autorización que define protocolos y flujos de trabajo de autorización." cta="Ver glosario" href="/es/docs/glossary?term=access+token">token de acceso</Tooltip>. Auth0 admite dos perfiles diferentes:

* Perfil de token de Auth0
* Perfil RFC 9068

El valor predeterminado es el perfil de Auth0. La principal diferencia entre estos dos perfiles está en los nombres de los claims. El perfil de Auth0 usa `azp` en lugar de `client_id`. Para obtener más información sobre las diferencias, consulte [Perfiles de token de acceso](/es/docs/secure/tokens/access-tokens/access-token-profiles).

<div id="signing-algorithms">
  ### Algoritmos de firma
</div>

Cuando crea una API, debe seleccionar el algoritmo con el que se firmarán sus tokens. La firma se utiliza para verificar que el remitente del <Tooltip tip="JSON Web Token (JWT): formato estándar de ID Token (y, a menudo, de token de acceso) utilizado para representar claim de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWT">JWT</Tooltip> es quien dice ser y para garantizar que el mensaje no haya sido modificado durante el proceso.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La firma forma parte de un JWT. Si no está familiarizado con la estructura de un JWT, consulte [Estructura de JSON Web Token](/es/docs/secure/tokens/json-web-tokens/json-web-token-structure).
</Callout>

Para crear la firma, debe tomar el encabezado codificado, la carga útil codificada, un secreto, el algoritmo especificado en el encabezado y firmar esos elementos. Ese algoritmo, que forma parte del encabezado del JWT, es el que selecciona para su API: `HS256,` `RS256,` o `PS256`.

La práctica más segura, y nuestra recomendación, es usar **RS256**. Algunas de las razones son:

* Con RS256, tiene la certeza de que solo quien posee la clave privada (Auth0) puede firmar tokens, mientras que cualquiera puede verificar si el token es válido usando la clave pública.
* Con HS256, si la clave privada se ve comprometida, tendría que volver a desplegar la API con el nuevo secreto. Con RS256, puede solicitar un token válido para múltiples audiencias.
* Con RS256, puede implementar la rotación de claves sin tener que volver a desplegar la API con el nuevo secreto.

<div id="configure-the-scopes">
  ## Configura los Alcances
</div>

En la configuración de tu API, tendrás que configurar los Alcances que las aplicaciones pueden solicitar durante la autorización. Ve a la pestaña Permissions.

En esta sección, puedes agregar los cuatro alcances mencionados anteriormente: `batch:upload`, `read:timesheets`, `create:timesheets`, `delete:timesheets` y `approve:timesheets`. Agrega también un alcance adicional: `batch:upload`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  A efectos de este documento, solo nos ocuparemos del alcance `batch:upload`, ya que es lo único que requiere la tarea cron. Sin embargo, para que la configuración esté completa, también agregamos los alcances necesarios para futuras aplicaciones.
</Callout>

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=984a687f31394ba988ee0fab7d17cbd6" alt="Dashboard > APIs > Permissions" data-og-width="1052" width="1052" data-og-height="916" height="916" data-path="docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=280&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=05b898db508fefe58f8bd0772a2b8524 280w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=560&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=46fb3e9f26d4c510520fb22c3e3f384f 560w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=840&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ad8d50ab117ebfcf15912063db00223b 840w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1100&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=2e8baf95a9cb5458e18a3e33f85d1907 1100w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=1650&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=35936c5bcb16f76e20050277830c5a85 1650w, https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/73FeuGyODcu3q7PKjLaQOO/63d8d20e9249e751152b4530005f4c71/Timesheets_API_-_Permissions_-_English.png?w=2500&fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=142c44e382cef4c14693c8c5de2a007f 2500w" />
</Frame>

<div id="create-the-application">
  ## Crear la aplicación
</div>

Al crear una API en el Auth0 Dashboard, se generará automáticamente una aplicación de prueba para la API. En el Auth0 Dashboard, vaya a la [sección Aplicaciones](https://manage.auth0.com/#/applications) y verá la aplicación de prueba para la API de Timesheets.

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=ea4f117201217b98bdc02e90814df66a" alt="undefined" width="1552" height="760" data-path="docs/images/cdy7uua7fh8z/7lnuzFgs3IuWyL4bK5aVZV/05abca8035c011bf018b27e31f77a055/2024-06-28_17-13-34.png" />
</Frame>

Vaya a la configuración de la aplicación seleccionando la opción de menú al final. Cambie el nombre de la aplicación a `Timesheets Import Job`.

Para la tarea cron, necesitará una aplicación Machine-to-Machine. La aplicación de prueba que se generó cuando se creó la API se configuró automáticamente como una aplicación Machine-to-Machine.

<div id="configure-applications-access-to-the-api">
  ## Configurar el acceso de la aplicación a la API
</div>

Por último, debe permitir que la aplicación acceda a la API de Timesheets. Vuelva a la configuración de la API y seleccione la pestaña Machine to Machine Application.

Verá la aplicación **Timesheets Import Job** en la lista, y debería tener acceso a la API, como lo indica el interruptor situado a la derecha del nombre de la aplicación, con el valor `Authorized`. Si no indica que la aplicación está autorizada, simplemente cambie el valor del interruptor de `Unauthorized` a `Authorized`.

También deberá especificar qué alcances se incluirán en los tokens de acceso emitidos para la aplicación cuando esta se autorice con Auth0.

Expanda la configuración de la aplicación haciendo clic en la flecha hacia abajo situada en el extremo derecho y verá la lista de alcances disponibles. La tarea cron solo requerirá el alcance `batch:upload`, ya que simplemente creará nuevos registros de horas a partir de las entradas del sistema externo.

Una vez que haya seleccionado el alcance `batch:upload`, guarde la configuración haciendo clic en el botón **Update**.

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=db0b66c6d8c01df1ef00ff3b8bf2c3e9" alt="Dashboard - Applications - APIs - Machine to Machine Applications - Authorize" width="898" height="1274" data-path="docs/images/cdy7uua7fh8z/3PjvkTaoOZKWCMJol4ajCu/b5df50d1b78f95f5a2a8f82e6bb39e42/2025-02-26_18-58-47.png" />
</Frame>

Ahora que hemos diseñado nuestra solución y revisado las configuraciones necesarias del lado de Auth0, podemos continuar con la implementación.
