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

> Describe cómo la rotación del token de actualización proporciona mayor seguridad al emitir un nuevo token de actualización con cada solicitud que un cliente que usa tokens de actualización hace a Auth0 para obtener un nuevo token de acceso.

# Rotación del token de actualización

La <Tooltip tip="Token de actualización: Token usado para obtener un Token de acceso renovado sin obligar a los usuarios a volver a iniciar sesión." cta="Ver glosario" href="/es/docs/glossary?term=Refresh+token">rotación del token de actualización</Tooltip> es una técnica para obtener nuevos <Tooltip tip="Token de acceso: Token usado para acceder a APIs o recursos protegidos." cta="Ver glosario" href="/es/docs/glossary?term=access+tokens">tokens de acceso</Tooltip> mediante tokens de actualización que va más allá de la [autenticación silenciosa](/es/docs/authenticate/login/configure-silent-authentication). Los tokens de actualización suelen tener una vida útil más larga y pueden usarse para solicitar nuevos tokens de acceso después de que los tokens de acceso de menor duración expiren. Los tokens de actualización se usan con frecuencia en aplicaciones nativas en dispositivos móviles junto con tokens de acceso de corta duración para ofrecer una experiencia de usuario fluida sin tener que emitir tokens de acceso de larga duración.

Con la <Tooltip tip="Rotación del token de actualización: Estrategia de reemplazar con frecuencia los tokens de actualización para minimizar la vulnerabilidad. Con la rotación del token de actualización, cada vez que tu aplicación intercambia un token de actualización para obtener un nuevo token de acceso, Auth0 también devuelve un nuevo token de actualización." cta="Ver glosario" href="/es/docs/glossary?term=refresh+token+rotation">rotación del token de actualización</Tooltip> habilitada en el <Tooltip tip="Rotación del token de actualización: Estrategia de reemplazar con frecuencia los tokens de actualización para minimizar la vulnerabilidad. Con la rotación del token de actualización, cada vez que tu aplicación intercambia un token de actualización para obtener un nuevo token de acceso, Auth0 también devuelve un nuevo token de actualización." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>, cada vez que una aplicación intercambia un token de actualización para obtener un nuevo token de acceso, también se devuelve un nuevo token de actualización. Por lo tanto, ya no tienes un token de actualización de larga duración que, si se ve comprometido, podría proporcionar acceso ilegítimo a los recursos. Como los tokens de actualización se intercambian e invalidan continuamente, el riesgo se reduce.

La forma en que funciona la rotación del token de actualización en Auth0 cumple con [OAuth 2.0 BCP](https://tools.ietf.org/html/draft-ietf-oauth-security-topics-13#section-4.12) y funciona con los siguientes flujos:

* [Flujo de código de autorización](/es/docs/get-started/authentication-and-authorization-flow/authorization-code-flow)
* [Flujo de código de autorización con Proof Key for Code Exchange](/es/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce)
* [Flujo de autorización de dispositivo](/es/docs/get-started/authentication-and-authorization-flow/device-authorization-flow)
* [Flujo de contraseña del propietario del recurso](/es/docs/get-started/authentication-and-authorization-flow/resource-owner-password-flow)

<div id="maintain-user-sessions-in-spas">
  ## Mantener las sesiones de usuario en las SPA
</div>

Hasta hace muy poco, las SPA mantenían la sesión del usuario mediante el Flujo de código de autorización con PKCE en combinación con autenticación silenciosa. Los avances recientes en las tecnologías de privacidad de los navegadores, como Intelligent Tracking Prevention (ITP), impiden el acceso a la <Tooltip tip="Cookie de sesión: entidad que, cuando está presente, permite considerar autenticado al usuario." cta="Ver glosario" href="/es/docs/glossary?term=session+cookie">cookie de sesión</Tooltip> de Auth0, lo que obliga a los usuarios a volver a autenticarse.

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3sf7RRsy81bt3zcXMnHUSe/2171fdab4ffeb0987c329aa897038abc/rt-and-at.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=e9ad75d7fab9abc686e06dba4d38324c" alt="Diagrama de rotación del token de actualización para mantener las sesiones de usuario en las SPA" width="900" height="764" data-path="docs/images/cdy7uua7fh8z/3sf7RRsy81bt3zcXMnHUSe/2171fdab4ffeb0987c329aa897038abc/rt-and-at.png" />
</Frame>

Lamentablemente, los tokens de actualización de larga duración no son adecuados para las SPA porque no existe en el navegador un mecanismo de almacenamiento persistente que pueda garantizar que solo la aplicación prevista tenga acceso. Dado que existen vulnerabilidades que pueden explotarse para obtener estos activos de alto valor y dar a actores maliciosos acceso a recursos protegidos, se ha desaconsejado firmemente el uso de tokens de actualización en las SPA.

La rotación del token de actualización ofrece una solución para evitar la pérdida de las sesiones de los usuarios finales debido a efectos secundarios de los mecanismos de privacidad de los navegadores. Como la rotación del token de actualización no depende del acceso a la cookie de sesión de Auth0, no se ve afectada por ITP ni por mecanismos similares.

El siguiente diagrama de estado ilustra cómo se usa la rotación del token de actualización junto con el Flujo de código de autorización con PKCE, pero el principio general de obtener un nuevo token de actualización con cada intercambio se aplica a todos los flujos compatibles.

<Frame>
  <img src="https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/41avsR2u0B4fSP3Bwh0WZz/d803a9057ea6e606d602c7c97d99fc3a/rtr-state-diagram.png?fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=1391833b00321c0e5c2b671652c70070" alt="Diagrama de estado de la rotación del token de actualización para mantener las sesiones de usuario en las SPA" width="1500" height="1567" data-path="docs/images/cdy7uua7fh8z/41avsR2u0B4fSP3Bwh0WZz/d803a9057ea6e606d602c7c97d99fc3a/rtr-state-diagram.png" />
</Frame>

Esto significa que puedes usar tokens de actualización de forma segura para mitigar los efectos adversos de las herramientas de privacidad de los navegadores y proporcionar acceso continuo a los usuarios finales sin interrumpir la experiencia de usuario.

<div id="automatic-reuse-detection">
  ## Detección automática de reutilización
</div>

Cuando un cliente necesita un nuevo token de acceso, envía el token de actualización con la solicitud a Auth0 para obtener un nuevo par de tokens. En cuanto Auth0 emite el nuevo par, el token de actualización usado en la solicitud se invalida. Esto protege tu aplicación frente a ataques de repetición derivados de tokens comprometidos.

Sin imponer restricciones vinculadas al remitente, es imposible que el <Tooltip tip="Servidor de autorización: Servidor centralizado que contribuye a definir los límites del acceso de un usuario. Por ejemplo, tu 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> sepa qué actor es legítimo o malicioso en caso de un ataque de repetición. Por eso, es importante que el token de actualización emitido más recientemente también se invalide de inmediato cuando se envía al servidor de autorización un token de actualización usado previamente (ya invalidado). Esto evita que cualquier token de actualización de la misma familia de tokens (todos los tokens de actualización derivados del token de actualización original emitido para el cliente) pueda usarse para obtener nuevos tokens de acceso.

Por ejemplo, considera el siguiente escenario:

<Frame>
  <img src="https://mintcdn.com/translations/Dcx0M11uuptU53TX/docs/images/cdy7uua7fh8z/33fe73R81Cpm6eTmOWfAnm/e7d168edc27861507a121910b32f1ee2/reuse-detection1.png?fit=max&auto=format&n=Dcx0M11uuptU53TX&q=85&s=f38db99d1301278466def0e78d33cb85" alt="Diagrama de estados de detección de reutilización de la rotación del token de actualización" width="1500" height="1105" data-path="docs/images/cdy7uua7fh8z/33fe73R81Cpm6eTmOWfAnm/e7d168edc27861507a121910b32f1ee2/reuse-detection1.png" />
</Frame>

1. El Cliente legítimo tiene el **token de actualización 1**, y este se filtra o lo roba el Cliente malicioso.
2. El Cliente legítimo usa el **token de actualización 1** para obtener un nuevo par de token de actualización y token de acceso.
3. Auth0 devuelve el **token de actualización 2/token de acceso 2**.
4. El Cliente malicioso intenta entonces usar el **token de actualización 1** para obtener un token de acceso. Auth0 reconoce que el token de actualización 1 se está reutilizando e invalida de inmediato la familia de tokens de actualización, incluido el **token de actualización 2**.
5. Auth0 devuelve una respuesta de acceso denegado al Cliente malicioso.
6. El **token de acceso 2** vence y el Cliente legítimo intenta usar el **token de actualización 2** para solicitar un nuevo par de tokens. Auth0 devuelve una respuesta de acceso denegado al Cliente legítimo.
7. Se requiere reautenticación.

Este mecanismo de protección funciona independientemente de si el cliente legítimo o el cliente malicioso logra intercambiar el **token de actualización 1** por un nuevo par de tokens antes que el otro. En cuanto se detecta la reutilización, se denegarán todas las solicitudes posteriores hasta que el usuario vuelva a autenticarse. Cuando se detecta una reutilización, Auth0 registra en los logs los [eventos](/es/docs/deploy-monitor/logs/log-event-type-codes) detectados (como `ferrt`, que indica un intercambio fallido). Esto puede resultar especialmente útil junto con las capacidades de [Log Streaming](/es/docs/customize/log-streams) de Auth0 para detectar actividad sospechosa.

Otro ejemplo es cuando el cliente malicioso roba el **token de actualización 1** y logra usarlo para obtener un token de acceso antes de que el cliente legítimo intente usar el **token de actualización 1**. En este caso, el acceso del cliente malicioso sería de corta duración porque el **token de actualización 2** (o cualquier token de actualización emitido posteriormente) se revoca automáticamente cuando el cliente legítimo intenta usar el **token de actualización 1**, como se muestra en el siguiente diagrama:

<Frame>
  <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/36rAUgLOAqW7k7Fdl1eRN1/c1a57be5093416b50d42ec41a1e3a233/reuse-detection2.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=b89ad8a6b2462ef5d0a443d5cdca40d0" alt="Diagrama de estados de detección de reutilización de la rotación del token de actualización" width="1500" height="1189" data-path="docs/images/cdy7uua7fh8z/36rAUgLOAqW7k7Fdl1eRN1/c1a57be5093416b50d42ec41a1e3a233/reuse-detection2.png" />
</Frame>

<div id="sdk-support">
  ## Compatibilidad con SDK
</div>

Los siguientes SDK son compatibles con la rotación del token de actualización y la detección automática de reutilización.

* SDK de SPA de Auth0
* Flutter (Web)
* SDK de Swift (iOS)
* SDK de Android
* Flutter
* SDK de React Native
* WPF / Winforms
* Xamarin

Para consultar la documentación específica de estos SDK, visita la página [Bibliotecas de SDK de Auth0](/es/docs/libraries).

Puedes elegir almacenar los tokens en el almacenamiento local o en la memoria del navegador. De forma predeterminada, se almacenan en la memoria del navegador. Consulta [Prácticas recomendadas para tokens](/es/docs/secure/tokens/token-best-practices) para ver recomendaciones sobre el almacenamiento de tokens. Debes habilitar el acceso sin conexión y solicitar el scope offline\_access en el SDK del cliente.

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

* [Configurar la rotación del token de actualización](/es/docs/secure/tokens/refresh-tokens/configure-refresh-token-rotation)
* [Deshabilitar la rotación del token de actualización](/es/docs/secure/tokens/refresh-tokens/disable-refresh-token-rotation)
* [Configurar la caducidad del token de actualización](/es/docs/secure/tokens/refresh-tokens/configure-refresh-token-expiration)
* [Prácticas recomendadas para tokens](/es/docs/secure/tokens/token-best-practices)
