Saltar al contenido principal

Antes de empezar

Para usar Back-Channel Logout, tu aplicación debe cumplir los siguientes requisitos:
  • El endpoint URI de Back-Channel Logout de OIDC debe estar expuesto en internet para que tu inquilino de Auth0 pueda acceder a él.
  • Las aplicaciones listas para producción deben usar TLS. Para obtener más información, consulta TLS (SSL) Versions and Ciphers.
  • La aplicación debe poder almacenar el identificador de sesión (sid) proporcionado y asociarlo a las sesiones de usuario que crea. Recomendamos que las aplicaciones de producción usen almacenamiento de sesiones duradero.
  • La aplicación debe poder recuperar una sesión existente mediante el sid durante el proceso de cierre de sesión sin usar cookies del lado del cliente. Las cookies existen dentro del navegador y no son accesibles para el endpoint de callback de cierre de sesión.

Disponibilidad

OIDC Back-Channel Logout está disponible para todos los clientes con plan Enterprise. Debe comprobar el endpoint de metadatos estándar de OIDC /.well-known/* para determinar si su aplicación cumple los requisitos.
GET https://acme.eu.auth0.com/.well-known/openid-configuration

HTTP 200
{ ..., "backchannel_logout_supported": true, 
  "backchannel_logout_session_supported": true }

Restricciones de Back-Channel Logout

Las URL de Back-Channel Logout se invocan en endpoints expuestos públicamente y deben cumplir ciertas restricciones:
  1. Debe usar el protocolo HTTPS. No se permiten HTTP sin cifrar ni otros protocolos.
  2. No debe usar subdominios de Auth0. Algunos subdominios de Auth0 son:
    • auth0.com
    • auth0app.com
    • webtask.io
    • webtask.run
  3. No recomendamos usar direcciones IP sin dominio. Para usar Back-Channel Logout, las direcciones IP deben ser públicas. No se permiten direcciones IP de rangos internos, reservados o de loopback.

Configura Auth0

Registra tu aplicación para recibir Logout Tokens a través de o .

Suscribir aplicaciones

  1. Ve a Auth0 Dashboard > Applications.
  2. Elige la aplicación que quieres registrar.
  3. Selecciona la pestaña Settings.
  4. En OpenID Connect Back-Channel Logout > Back-Channel Logout URI, agrega el URI de cierre de sesión de la aplicación que recibirá los logout_tokens
  5. Cuando termines, selecciona Save Changes.
    Auth0 Dashboard > Applications > Settings

Cancelar la suscripción de aplicaciones

Al cancelar la suscripción de tu aplicación, el servicio deja de hacer seguimiento de nuevos inicios de sesión y de enviar eventos de cierre de sesión. El servicio descarta los eventos de cierre de sesión pendientes una vez cancelada la suscripción de tu aplicación.Para cancelar la suscripción de tu aplicación, elimina la URL de Back-Channel Logout.
  1. Ve a Auth0 Dashboard > Applications.
  2. Elige la aplicación que quieres registrar.
  3. Selecciona la pestaña Settings.
  4. En OpenID Connect Back-Channel Logout > Back-Channel Logout URI
  5. Elimina la URL de back-channel.
  6. Cuando termines, selecciona Save Changes.
    Auth0 Dashboard > Applications > Settings
Para fines de auditoría, el servicio siempre registra la suscripción o cancelación de la suscripción de las URL de Back-Channel Logout como API Operation Event en los registros del inquilino de Auth0. Para obtener más información, consulta Logs.

Configure la aplicación

Una vez que haya configurado Back-Channel Logout a través de Auth0 Dashboard o Management API, configure la aplicación para usar el servicio según la tecnología o el framework.
  1. Implemente la autenticación del usuario final según el tipo de aplicación.
    1. Los usuarios finales deben poder iniciar sesión en la aplicación y se debe crear una sesión.
    2. Auth0 debe emitir un token de ID, y este debe estar accesible en el backend de la aplicación para su posterior procesamiento.
  2. Amplíe el proceso de inicio de sesión para guardar los claims sid y, opcionalmente, sub después de validar el token de ID.
    1. Estos claims deben guardarse asociados a la sesión actual de la aplicación.
    2. Las funciones de administración de sesiones deben poder recuperar una sesión específica a partir del valor de sid.
  3. Configure el endpoint de Back-Channel Logout:
    1. El endpoint debe procesar únicamente solicitudes HTTP POST.
    2. Extraiga el parámetro logout_token y valídelo como un JWT normal de acuerdo con la especificación.
    3. Verifique que el token contenga un claim events con un valor de objeto JSON y un miembro llamado http://schemas.openid.net/event/backchannel-logout.
    4. Verifique que el token contenga los claims sid y/o sub.
    5. Verifique que el token NO contenga el claim nonce. Esto es necesario para evitar usos indebidos al distinguir el Logout Token del token de ID.
    6. Una vez validado el token, recupere la sesión correspondiente al valor sid y/o sub recibido y termínela. El proceso exacto para finalizar la sesión de la aplicación depende de los detalles de la implementación. Por ejemplo, puede ser necesario comunicar este evento al frontend.

Ejemplo de solicitud de Back-Channel Logout de OIDC

Carga útil codificada del token:
cURL
POST /backchannel-logout HTTP/1.1
Host: rp.example.org
Content-Type: application/x-www-form-urlencoded

logout_token=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImdwY3ZFT0FPREE2T3pXRmw3ODVxbCJ9.eyJpc3MiOiJodHRwczovL2FydGV4LWRldi5ldS5hdXRoMC5jb20vIiwic3ViIjoiYXV0aDB8NjAyZTkzZGI4M2ZhNmYwMDc0OWEyM2U2IiwiYXVkIjoiVHVoTkx2N3VsWEQzUmZ5TGxTTWJPdnN6endKSkZQcE8iLCJpYXQiOjE2OTgxNjA5MjgsImV4cCI6MTY5ODE2MTA0OCwianRpIjoiNDRhOTEyMTUtZGZiNC00ZGZlLWExZWItZmNhZmE5MTFkZWJhIiwiZXZlbnRzIjp7Imh0dHA6Ly9zY2hlbWFzLm9wZW5pZC5uZXQvZXZlbnQvYmFja2NoYW5uZWwtbG9nb3V0Ijp7fX0sInRyYWNlX2lkIjoiODFiMzM2YTk0YTRhNTcwNyIsInNpZCI6IjM3NVVJcF9JRDVtQ1RDbEllQkVIcFhmR3dxNTF0Rl9MIn0.aEoAL_U-EPlf3f7Fup-bu7Yv0S0GOnrkL8Njd6j6UNqZcr5VrWWFf3CWvkRi7Cm6wMgU2qIMhb7643ca8-ajR7zHlMu0Z3r-gfd2D1xudKLyUSC3v2D5WJZz5I8xMZ_LWtIN2W3l4SQFO9MgK_7F3x0WIWXo9KPC9tgOaOLPnsiv__MutM1ZakoCsJPddl5gVM4TYtHOue6WM7SOXZNa3SSiv57YQOX2KNCL7sWmZp_J1OXKy8lsgkNFqiOVwu39p4sgjKYEXQU0G-I0yY_aeNbnlnxFG6OuxaDt_zwg6AvKglLSNGqrrvzy4GsYJi5HMGZ1GsSs7rQLg7Iuu6JM-A
El token caduca en 2 minutos (120 s).
Carga útil del token decodificado:
JSON
{
   "iss": "https://artex-dev.eu.auth0.com/",
   "sub": "auth0|602e93db83fa6f00749a23e6",
   "aud": "TuhNLv7ulXD3RfyLlSMbOvszzwJJFPpO",
   "iat": 1698160928,
   "exp": 1698161048,
   "jti": "44a91215-dfb4-4dfe-a1eb-fcafa911deba",
   "events": {
         "http://schemas.openid.net/event/backchannel-logout": {}
   },
   "trace_id": "81b336a94a4a5707",
   "sid": "375UIp_ID5mCTClIeBEHpXfGwq51tF_L"
}

Respuestas esperadas

  • HTTP 200:  Confirma el cierre de sesión del usuario en la aplicación específica.
  • HTTP 400: Indica una solicitud incorrecta. No se entiende la solicitud o el token no superó la validación. Auth0 registra el problema en los registros del inquilino, pero no realiza más solicitudes para esta sesión específica.

Solucionar problemas

La aplicación no recibió los eventos de cierre de sesión

Si tu aplicación no recibió una solicitud de cierre de sesión tras un evento de cierre de sesión.
  1. Asegúrate de que tu aplicación tenga registrada una URL de Back-Channel Logout en Auth0 Dashboard.
  2. Asegúrate de que se pueda acceder a la URL de Back-Channel Logout desde el inquilino de Auth0.
  3. Asegúrate de que se haya establecido una sesión válida. El usuario final debe iniciar sesión en tu aplicación específica a través de Auth0.
    Las aplicaciones reciben eventos de cierre de sesión solo si los usuarios finales inician sesión en esa aplicación específica con Auth0.  Si los usuarios finales inician sesión en otras aplicaciones, no se activarán eventos de cierre de sesión.
  4. Revisa los registros del inquilino de Auth0 para ver si hay mensajes sobre errores en la entrega de mensajes de cierre de sesión.
  5. Asegúrate de que el cierre de sesión se active mediante el endpoint estándar de cierre de sesión. Otros eventos no activan los eventos de cierre de sesión.
  6. Si es posible, revisa si hay solicitudes bloqueadas en el servidor web y/o en los registros del firewall de la aplicación.

No encuentro los registros del inquilino para OIDC Back-Channel Logout

Esta función se lanzará gradualmente para todos los inquilinos a partir del 3 de octubre de 2023. Es posible que aún reciba códigos de eventos del registro del inquilino sslo para oidc_backchannel_logout_succeeded o fslo para oidc_backchannel_logout_failed.

La aplicación cliente no puede verificar el Logout Token recibido

Si la transacción sigue fallando con un error 400:
  1. Compruebe si el token es un JWT estándar codificado en base64. Algunos servidores web pueden truncar los parámetros largos. Para obtener más información, consulte Signing Algorithms.
  2. Si es posible, capture un token y verifique que sea un JWT. Use una fuente confiable, como JWT.IO.
  3. Asegúrese de que la función de verificación obtenga dinámicamente la clave de firma del inquilino a través de JSON Web Key Sets (JWKS).
    No recomendamos fijar una clave estática en el código. Si su configuración requiere hacerlo, asegúrese de que incluya la clave pública más reciente del inquilino de Auth0.

Errores de tiempo de espera de la respuesta

Auth0 esperará cinco segundos a que responda la URL de Back-Channel Logout de OIDC de la aplicación. Transcurrido ese tiempo, registrará una “Failed OIDC Back-Channel Logout request” en los registros del inquilino con una descripción de respuesta vacía.

Más información