> ## 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 cerrar la sesión de un usuario con el endpoint de cierre de sesión de OIDC.

# Cerrar la sesión de usuarios de Auth0 con el endpoint de OIDC

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

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 codeExample3 = `https://{yourDomain}/oidc/logout?{clientId}={yourClientId}&logout_hint={sessionId}`;

export const codeExample4 = `https://{yourDomain}/oidc/logout?post_logout_redirect_uri=http%3A%2F%2Fwww.example.com`;

export const codeExample5 = `PATCH https://{yourDomain}/api/v2/clients/{clientId}
Authorization: Bearer {yourMgmtApiAccessToken}
Content-Type: application/json

{
  "allowed_logout_urls": [
    "https://www.example.com",
    "https://www.example.com/logout"
  ]
}
`;

export const codeExample6 = `PATCH https://{yourDomain}/api/v2/tenants/settings
Authorization: Bearer {yourMgmtApiAccessToken}
Content-Type: application/json

{
  "allowed_logout_urls": [
    "https://www.example.com",
    "https://www.example.com/logout"
  ]
}
`;

Auth0 implementa [RP-Initiated Logout 1.0](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) de <Tooltip tip="OpenID: Estándar abierto de autenticación que permite a las aplicaciones verificar la identidad de los usuarios sin recopilar ni almacenar información de inicio de sesión." cta="Ver glosario" href="/es/docs/glossary?term=OpenID">OpenID</Tooltip> Connect para el cierre de sesión de usuarios finales. Este estándar forma parte de la colección de [especificaciones finales](https://openid.net/developers/specs/) de OpenID Connect.

<div id="how-it-works">
  ## Cómo funciona
</div>

El cierre de sesión iniciado por RP es un escenario en el que una <Tooltip tip="Parte usuaria: entidad (como un servicio o una aplicación) que depende de un Proveedor de identidad de terceros para autenticar a un usuario." cta="Ver glosario" href="/es/docs/glossary?term=relying+party">parte usuaria</Tooltip> (usuario) solicita al proveedor OpenID (Auth0) que cierre su sesión.

1. El usuario inicia una solicitud de cierre de sesión en la aplicación.
2. La aplicación redirige al usuario al endpoint [OIDC Logout](https://auth0.com/docs/api/authentication#oidc-logout) de la API de autenticación de Auth0.
3. Auth0 redirige al usuario al destino correspondiente en función de los [parámetros del endpoint OIDC Logout](#oidc-logout-endpoint-parameters) proporcionados.

<div id="configure-rp-initiated-logout">
  ## Configurar RP-Initiated Logout
</div>

Para configurar RP-Initiated Logout, debe asegurarse de que su aplicación pueda encontrar el parámetro `end_session_endpoint` en el [documento de metadatos de descubrimiento](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig) de su inquilino de Auth0 y de que llame al endpoint de cierre de sesión de OIDC con los parámetros necesarios.

<div id="enable-endpoint-discovery">
  ### Habilitar la detección del endpoint
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Para los inquilinos de Auth0 creados a partir del 14 de noviembre de 2023, **RP-Initiated Logout End Session Endpoint Discovery** está habilitado de forma predeterminada.
</Callout>

Puede habilitar **RP-Initiated Logout End Session Endpoint Discovery** en 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> o con la <Tooltip tip="Management API: un producto que permite a los clientes realizar tareas administrativas." cta="Ver glosario" href="/es/docs/glossary?term=Management+API">Management API</Tooltip> de Auth0.

<Tabs>
  <Tab title="Dashboard">
    Para habilitar **RP-Initiated Logout End Session Endpoint Discovery** en el Auth0 Dashboard:

    1. Vaya a [Dashboard > Settings > Advanced](https://manage.auth0.com/#/tenant/advanced).
    2. Busque la sección **Login and Logout**.
    3. Active el interruptor **RP-Initiated Logout End Session Endpoint Discovery**.
  </Tab>

  <Tab title="Management API">
    Para habilitar **RP-Initiated Logout End Session Endpoint Discovery** con la Management API:

    1. [Obtenga un token de acceso de la Management API](/es/docs/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production) que incluya el scope `update:tenant_settings`.
    2. Llame al endpoint [Update tenant settings](https://auth0.com/docs/api/management/v2/tenants/patch-settings) de la Management API con la siguiente carga útil:

       ```json JSON lines theme={null}
       {
         "oidc_logout": {
           "rp_logout_end_session_endpoint_discovery": true
         }
       }
       ```
  </Tab>
</Tabs>

<div id="call-the-oidc-logout-endpoint">
  ### Llama al endpoint de cierre de sesión de OIDC
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  La mayoría de las [bibliotecas SDK de Auth0](/es/docs/libraries) son compatibles con OIDC y admiten el cierre de sesión iniciado por RP de forma nativa.
</Callout>

Cuando llames al endpoint de cierre de sesión de OIDC, Auth0 recomienda que proporciones el parámetro `id_token_hint`.

Si tu aplicación no puede almacenar de forma segura <Tooltip tip="Token de ID: credencial destinada al propio cliente y no al acceso a un recurso." cta="Ver glosario" href="/es/docs/glossary?term=ID+tokens">tokens de ID</Tooltip>, puedes proporcionar en su lugar los parámetros `logout_hint` y `client_id`.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Puedes llamar al endpoint de cierre de sesión de OIDC con información redundante.

  Por ejemplo, puedes enviar los parámetros `id_token_hint` y `logout_hint`, o `id_token_hint` y `client_id`.

  En todos los casos, Auth0 comprueba que los datos del usuario y de la sesión sean coherentes, y devuelve un error si detecta alguna discrepancia.
</Callout>

<div id="oidc-logout-endpoint-parameters">
  #### Parámetros del endpoint OIDC Logout
</div>

El endpoint [OIDC Logout](https://auth0.com/docs/api/authentication#oidc-logout) de la API de autenticación admite los siguientes parámetros:

| Parámetro                  | ¿Obligatorio? | Descripción                                                                                                                                                                                                                                       |
| -------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id_token_hint`            | Recomendado   | Token de ID emitido previamente para el usuario. Indica qué usuario debe cerrar sesión.                                                                                                                                                           |
| `logout_hint`              | Opcional      | Valor del ID de sesión (`sid`) que indica qué usuario debe cerrar sesión.                                                                                                                                                                         |
| `post_logout_redirect_uri` | Opcional      | Valor de la URL de redirección que indica adónde redirigir al usuario después de cerrar sesión.                                                                                                                                                   |
| `client_id`                | Opcional      | ID de cliente de la aplicación.                                                                                                                                                                                                                   |
| `federated`                | Opcional      | Indica a Auth0 que cierre la sesión del usuario en su Proveedor de identidad.                                                                                                                                                                     |
| `state`                    | Opcional      | Valor opaco que la aplicación agrega a la solicitud inicial de cierre de sesión y que Auth0 incluye cuando redirige de vuelta a `post_logout_redirect_uri`.                                                                                       |
| `ui_locales`               | Opcional      | Lista de configuraciones regionales separadas por espacios que se usa para restringir la lista de idiomas de la solicitud. La primera configuración regional de la lista debe coincidir con la configuración regional habilitada en su inquilino. |

<div id="id_token_hint-parameter">
  #### Parámetro `id_token_hint`
</div>

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Auth0 recomienda que uses el parámetro `id_token_hint` cuando llames al endpoint de cierre de sesión de OIDC.
</Callout>

El valor del parámetro `id_token_hint` debe ser el token de ID que Auth0 emitió al usuario después de que se autenticara.

El token de ID contiene las reclamaciones registradas del emisor (`iss`), <Tooltip tip="Audiencia: identificador único de la audiencia de un token emitido. Se denomina aud en un token, y su valor contiene el ID de una aplicación (ID de cliente) para un token de ID o de una API (identificador de API) para un token de acceso." cta="Ver glosario" href="/es/docs/glossary?term=audience">audiencia</Tooltip> (`aud`) y el ID de sesión de Auth0 (`sid`) para su verificación. Para obtener más información sobre las reclamaciones del token de ID, consulta [Estructura del token de ID](/es/docs/secure/tokens/id-tokens/id-token-structure).

<div id="examples">
  ##### Ejemplos
</div>

<AuthCodeGroup>
  ```http HTTP theme={null}
  https://{yourDomain}/oidc/logout?id_token_hint={yourIdToken}&post_logout_redirect_uri={yourCallbackUrl}
  ```

  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://{yourDomain}/oidc/logout' \
    --header 'content-type: application/x-www-form-urlencoded' \
    --data 'id_token_hint={yourIdToken}' \
    --data 'post_logout_redirect_uri={yourCallbackUrl}'
  ```
</AuthCodeGroup>

<div id="logout_hint-parameter">
  #### parámetro `logout_hint`
</div>

El valor del parámetro `logout_hint` debe ser el ID de sesión (`sid`) de la sesión actual del usuario en Auth0.

El ID de sesión (`sid`) se proporciona como una reclamación registrada en el token de ID que Auth0 emitió al usuario después de que se autenticara.

<Warning>
  Debe usar el ID de sesión (`sid`) asociado al token de ID emitido por Auth0 en el momento en que comenzó la sesión actual. Auth0 ignora las solicitudes con valores aleatorios o que no reflejan los datos de la sesión actual.
</Warning>

<div id="example">
  ##### Ejemplo
</div>

<AuthCodeBlock children={codeExample3} language="bash" />

<div id="post_logout_redirect_uri-parameter">
  #### Parámetro `post_logout_redirect_uri`
</div>

El valor del parámetro `post_logout_redirect_uri` debe ser una URL válida y codificada que esté registrada en la lista de **Allowed Logout URLs** de tu:

1. [configuración de la aplicación](/es/docs/get-started/applications/application-settings#application-uris): si proporcionas el parámetro `id_token_hint` o los parámetros `logout_hint` y `client_id`.
2. [configuración del Tenant](/es/docs/get-started/tenant-settings#login-and-logout): si proporcionas solo el parámetro `logout_hint`.

<div id="example">
  ##### Ejemplo
</div>

<AuthCodeBlock children={codeExample4} language="http" filename="HTTP" />

<div id="update-application-allowed-logout-urls">
  ##### Actualizar las Allowed Logout URLs de la aplicación
</div>

Puede registrar una URL en la lista de **Allowed Logout URLs** de su aplicación en Auth0 Dashboard o mediante la Management API de Auth0.

<Tabs>
  <Tab title="Dashboard">
    Para registrar una URL en la lista de **Allowed Logout URLs** de su aplicación en el Dashboard:

    1. Vaya a [Dashboard > Applications > Applications](https://manage.auth0.com/#/applications).
    2. Seleccione su aplicación.
    3. Busque la sección **URI de la aplicación**.
    4. Actualice las **Allowed Logout URLs** siguiendo las [directrices proporcionadas](#allowed-logout-urls-guidelines).
  </Tab>

  <Tab title="Management API">
    <Warning>
      Cuando llama al endpoint [Update a client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) de la Management API, se sobrescriben todos los datos de configuración existentes de los campos incluidos en el cuerpo de la solicitud.

      Para evitar la pérdida accidental de datos, primero llame al endpoint [Get a client](https://auth0.com/docs/api/management/v2/clients/get-clients-by-id) de la Management API para recuperar los datos de configuración actuales de su aplicación.
    </Warning>

    Para registrar una URL en la lista de **Allowed Logout URLs** de su aplicación mediante la Management API:

    1. [Obtenga un token de acceso para la Management API](/es/docs/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production) que incluya los alcances `update:clients`.
    2. Llame al endpoint [Update a client](https://auth0.com/docs/api/management/v2/clients/patch-clients-by-id) de la Management API y asegúrese de incluir la URL en el valor del campo `allowed_logout_urls` dentro del cuerpo de la solicitud.

    <AuthCodeBlock children={codeExample5} language="http" />
  </Tab>
</Tabs>

<div id="update-tenant-allowed-logout-urls">
  ##### Actualizar las Allowed Logout URLs del inquilino
</div>

Puede registrar una URL en la lista de **Allowed Logout URLs** de su inquilino desde el Auth0 Dashboard o mediante la Management API de Auth0.

<Tabs>
  <Tab title="Dashboard">
    Para registrar una URL en la lista de **Allowed Logout URLs** de su inquilino desde el Dashboard:

    1. Vaya a [Dashboard > Settings > Advanced](https://manage.auth0.com/#/tenant/advanced).
    2. Busque la sección **Login and Logout**.
    3. Actualice **Allowed Logout URLs** siguiendo las [directrices proporcionadas](#allowed-logout-urls-guidelines).
  </Tab>

  <Tab title="Management API">
    <Warning>
      Cuando llama al endpoint [Update tenant settings](https://auth0.com/docs/api/management/v2/tenants/patch-settings) de la Management API, se sobrescriben todos los datos de configuración existentes de los campos incluidos en el cuerpo de la solicitud.

      Para evitar la pérdida accidental de datos, primero llame al endpoint [Get tenant settings](https://auth0.com/docs/api/management/v2/tenants/tenant-settings-route) de la Management API para recuperar los datos de configuración actuales de su inquilino.
    </Warning>

    Para registrar una URL en la lista de **Allowed Logout URLs** de su inquilino mediante la Management API:

    1. [Obtenga un token de acceso de la Management API](/es/docs/secure/tokens/access-tokens/management-api-access-tokens/get-management-api-access-tokens-for-production) que incluya los alcances `update:tenant_settings`.
    2. Llame al endpoint [Update tenant settings](https://auth0.com/docs/api/management/v2/tenants/patch-settings) de la Management API y asegúrese de incluir la URL en el valor del campo `allowed_logout_urls` dentro del cuerpo de la solicitud.

    <AuthCodeBlock children={codeExample6} language="http" />
  </Tab>
</Tabs>

<div id="allowed-logout-urls-guidelines">
  ##### Pautas para Allowed Logout URLs
</div>

Cuando actualice **Allowed Logout URLs**, siga estas pautas para evitar errores de validación:

* Separe varios valores de URL con una coma (`,`).
* Incluya el esquema de la URL (por ejemplo, `https://`).

Puede usar un asterisco (`*`) como comodín para subdominios (como `https://*.example.com`), pero le recomendamos no usar comodines en entornos de producción. Para obtener más información, consulte [Subdomain URL Placeholders](/es/docs/get-started/applications/wildcards-for-subdomains#wildcard-url-placeholders).

<div id="add-query-string-parameters-to-post_logout_redirect_uri">
  ##### Agregue parámetros de consulta a post\_logout\_redirect\_uri
</div>

El endpoint de cierre de sesión de OIDC analiza los parámetros de consulta de la URL proporcionada al parámetro `post_logout_redirect_uri`.

Debe incluir la **URL exacta con parámetros de consulta** en **Allowed Logout URLs**; de lo contrario, la solicitud de cierre de sesión se rechazará. La URL debe coincidir exactamente, incluidos todos los nombres y valores de los parámetros de consulta.

Por ejemplo, si pasa `https://example.com/logout?myParam=1234` al parámetro `post_logout_redirect_uri` (codificado como `https%3A%2F%2Fexample.com%2Flogout%3FmyParam%3D1234`), debe incluir la URL completa `https://example.com/logout?myParam=1234` en **Allowed Logout URLs**.

<Warning>
  No se admiten valores dinámicos en los parámetros de consulta. Cada combinación única de nombres y valores de parámetros de consulta debe registrarse como una entrada independiente en **Allowed Logout URLs**.
</Warning>

<div id="ui_locales-parameter">
  #### parámetro `ui_locales`
</div>

El valor del parámetro `ui_locales` debe ser una lista de [configuraciones regionales compatibles](/es/docs/customize/internationalization-and-localization/universal-login-internationalization#new-universal-login-experience-localization) delimitada por espacios.

El primer valor de la lista debe coincidir con la [configuración Idioma predeterminado de su inquilino](/es/docs/get-started/tenant-settings#languages).

<div id="federated-parameter">
  #### parámetro `federated`
</div>

El parámetro `federated` no requiere ningún valor.

Si incluye el parámetro `federated` al llamar al endpoint de cierre de sesión de OIDC, Auth0 intenta [cerrar la sesión del usuario en su Proveedor de identidad](/es/docs/authenticate/login/logout/log-users-out-of-idps).

<div id="logout-consent-prompt">
  ## Pantalla de consentimiento de cierre de sesión
</div>

El estándar OIDC define que el flujo de cierre de sesión debe interrumpirse para solicitar el consentimiento del usuario si el proveedor de OpenID no puede verificar que la solicitud fue realizada por el usuario.

Auth0 aplica este comportamiento al mostrar una pantalla de consentimiento de cierre de sesión si detecta alguna de las siguientes condiciones:

* No se proporciona ninguno de los parámetros `id_token_hint` ni `logout_hint`.
* La claim `sid` del token de ID no corresponde a la sesión del navegador de la solicitud.
* El valor del parámetro `logout_hint` no coincide con los datos de la sesión actual.

<Frame>
  <img src="https://mintcdn.com/translations/MV7tE-x71x8RWRES/docs/images/cdy7uua7fh8z/5Sycg1aMJ1CLZwJj19Omv4/655fa33b439217d0410fba1335c63a63/Logout_-_English.png?fit=max&auto=format&n=MV7tE-x71x8RWRES&q=85&s=d8ad7352e79214a9b64766c2f3e90dab" alt="" width="496" height="671" data-path="docs/images/cdy7uua7fh8z/5Sycg1aMJ1CLZwJj19Omv4/655fa33b439217d0410fba1335c63a63/Logout_-_English.png" />
</Frame>

Si el usuario confirma la solicitud de cierre de sesión, Auth0 continúa con el flujo de cierre de sesión.

<div id="disable-the-logout-consent-prompt">
  ### Deshabilitar la pantalla de consentimiento de cierre de sesión
</div>

Puede deshabilitar la pantalla de consentimiento de cierre de sesión. Si lo hace, Auth0 no intentará detectar comportamientos anómalos y aceptará automáticamente las solicitudes de cierre de sesión.

Para deshabilitar la pantalla de consentimiento de cierre de sesión en el Dashboard:

1. Vaya a [Dashboard > Settings > Advanced](https://manage.auth0.com/#/tenant/advanced).
2. Desactive el interruptor **Show RP-Initiated Logout End-User Confirmation**.

   <Frame>
     <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/37K4hLjhSBMGvdGP9OEP7W/5ca88519a0c7b04951f880fa2fc47bd7/Login_and_Logout_-_English.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=e141dc05f51e0d87214156e726e4eeec" alt="" width="1002" height="1124" data-path="docs/images/cdy7uua7fh8z/37K4hLjhSBMGvdGP9OEP7W/5ca88519a0c7b04951f880fa2fc47bd7/Login_and_Logout_-_English.png" />
   </Frame>

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

* [Cerrar la sesión de los usuarios en las aplicaciones](/es/docs/authenticate/login/logout/log-users-out-of-applications)
* [Cerrar la sesión de los usuarios en los proveedores de identidad](/es/docs/authenticate/login/logout/log-users-out-of-idps)
* [Cerrar la sesión de los usuarios en los proveedores de identidad SAML](/es/docs/authenticate/login/logout/log-users-out-of-saml-idps)
* [Redirigir a los usuarios después del cierre de sesión alternativo](/es/docs/authenticate/login/logout/redirect-users-after-logout)
