> ## 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 configurar la rotación del token de actualización.

# Configurar la rotación del token de actualización

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****ENMASCARADO*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

export const codeExample = `const auth0 = await createAuth0Client({
   domain: '{yourDomain}',
   client_id: '{yourClientId}',
   audience: '{yourApiIdentifier}',
   useRefreshTokens: true
});
`;

Configure la rotación del <Tooltip tip="Token de actualización: token que se utiliza 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">token de actualización</Tooltip> para cada aplicación mediante el Dashboard o el [SDK de SPA de Auth0](/es/docs/libraries/auth0-single-page-app-sdk). Cuando la <Tooltip tip="Token de actualización: token que se utiliza 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+rotation">rotación del token de actualización</Tooltip> está habilitada, la transición para el usuario es transparente. La aplicación usa el token de actualización no rotativo anterior que aún no ha vencido y lo intercambia por un token de actualización rotativo.

Los escenarios de migración permiten la revocación automática de tokens al migrar de un token de actualización no rotativo a uno rotativo y viceversa.

* **Cuando la rotación del token de actualización está habilitada**:
  Al intercambiar un token de actualización no rotativo, se emite un nuevo token de actualización rotativo y se eliminan todos los tokens no rotativos emitidos para el mismo `client_id`, <Tooltip tip="Servidor de recursos: servidor que aloja recursos protegidos. Los servidores de recursos aceptan y responden a solicitudes de recursos protegidos." cta="Ver glosario" href="/es/docs/glossary?term=resource+server">servidor de recursos</Tooltip>, usuario e inquilino.
* **Cuando la rotación del token de actualización está deshabilitada**:
  Al intercambiar un token de actualización rotativo, se emite un token de actualización no rotativo y se revoca la familia de tokens de actualización rotativos emitida para el mismo `client_id`, servidor de recursos, usuario e inquilino.

<div id="configure-in-the-dashboard">
  ## Configurar en el Dashboard
</div>

1. Ve a [Dashboard > Applications](https://manage.auth0.com/#/applications).
2. Selecciona la aplicación que quieres configurar.
3. Ve a la pestaña **Settings**.
4. En **rotación del token de actualización**, habilita **Allow Refresh Token Rotation**.

   <Frame>
     <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/Rk6i8MUVWZG34P7K6aurb/9457a6ea7ca5942522778c7ed7925023/Screenshot_2024-11-05_at_18.14.22.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=29623897622c999e433647cc1dc5961a" alt="Dashboard Applications Applications Settings Tab Refresh Token Rotation" width="699" height="257" data-path="docs/images/cdy7uua7fh8z/Rk6i8MUVWZG34P7K6aurb/9457a6ea7ca5942522778c7ed7925023/Screenshot_2024-11-05_at_18.14.22.png" />
   </Frame>
5. Introduce el **Rotation Overlap Period** (en segundos) del token de actualización para contemplar el margen de tiempo entre la solicitud y la respuesta antes de que se active la detección automática de reutilización.
   Este período de superposición ayuda a evitar problemas de concurrencia al intercambiar varias veces el token de actualización rotativo dentro de un intervalo determinado. Durante la ventana de tolerancia, las funciones de detección de uso indebido no se aplican y se emite un nuevo token de actualización rotativo. Solo se puede reutilizar el token anterior; si se intercambia el penúltimo, se activará la detección de uso indebido.
6. Selecciona **Save Changes**.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La rotación del token de actualización solo es compatible con aplicaciones conformes a OIDC que tengan habilitado el tipo de concesión **Refresh Token**.
</Callout>

<div id="configure-with-the-auth0-spa-sdk">
  ## Configurar con el SDK de SPA de Auth0
</div>

Puede usar el SDK de SPA de Auth0 para habilitar la rotación del token de actualización. Debe habilitar el acceso sin conexión y solicitar el scope `offline_access` en el SDK del cliente.

1. Instale la versión más reciente del SDK `auth0-spa-js`:
   `npm install @auth0/auth0-spa-js`

2. Habilite esta funcionalidad en el SDK estableciendo `useRefreshTokens: true` para comenzar a enviar el scope `offline_access`.

   <AuthCodeBlock children={codeExample} language="javascript" />

3. Configure los ajustes de rotación del Token de actualización. Por ejemplo:

   ```http lines theme={null}
   PATCH /api/v2/clients/{client_id}
   {
     "refresh_token": {
       "rotation_type": "rotating",
       "expiration_type": "expiring",
       "token_lifetime": "2592000",
       "leeway": 3
     }
   }
   ```

   | Atributo          | Descripción                                                                                                                                                                                                                                                                                                                                   |
   | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | `rotation_type`   | Cadena de texto: "rotating" o "non-rotating"                                                                                                                                                                                                                                                                                                  |
   | `expiration_type` | Cadena de texto: "expiring" o "non-expiring"                                                                                                                                                                                                                                                                                                  |
   | `token_lifetime`  | El período de vencimiento predeterminado del token de actualización, cuando la **rotación del token de actualización** está habilitada, es de 30 días (2.592.000 segundos). Puede configurar hasta 1 año (31.557.600 segundos). **La duración no se extiende cuando se rotan los tokens.**                                                    |
   | `leeway`          | Permite usar el mismo token de actualización dentro del período especificado para contemplar posibles problemas de concurrencia de red que, de otro modo, invalidarían el token si el cliente intentara volver a usar el mismo token de actualización. De forma predeterminada, `leeway` está deshabilitado. Se puede configurar en segundos. |

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La rotación del token de actualización solo es compatible con aplicaciones conformes a OIDC con el tipo de grant Refresh Token habilitado.
</Callout>

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

Si se usa un token previamente invalidado, se revocarán de inmediato todos los tokens de actualización emitidos desde que se emitió ese token invalidado, junto con la autorización concedida, lo que obligará al usuario a volver a autenticarse.

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

* [Rotación del token de actualización](/es/docs/secure/tokens/refresh-tokens/refresh-token-rotation)
* [Usa la rotación del token de actualización](/es/docs/secure/tokens/refresh-tokens/use-refresh-token-rotation)
* [Desactiva la rotación del token de actualización](/es/docs/secure/tokens/refresh-tokens/disable-refresh-token-rotation)
