Saltar al contenido principal

Sesiones de corta duración

Este flujo de trabajo muestra cómo debe implementarse el SDK auth0-spa-js para admitir la gestión de sesiones multisitio. En este escenario, se asume que el tiempo de espera de inactividad de del inquilino está configurado en 300 segundos y que la expiración del de cada aplicación SPA está configurada en 150 segundos. Esto se considera una sesión de corta duración.

Funcionalidades del SDK

Flujo PKCE

Para todos los métodos para obtener un ID Token o , el SDK gestiona todos los detalles del flujo Proof Key for Code Exchange. No se requiere ninguna configuración ni esfuerzo adicional para que funcione.

Enlaces directos

Para mejorar la experiencia del usuario, el SDK incluye un parámetro appState para el método loginWithRedirect(). Los detalles de la aplicación actual se incluyen como parte de la solicitud al servidor de autenticación y se devuelven cuando la autenticación se completa correctamente, lo que permite que el usuario continúe su flujo sin interrupciones. En el Quickstart, el componente PrivateRoute establece un parámetro de estado targetUrl, y la función onRedirectCallback de index.js extrae este valor para redirigir al usuario cuando se completa la autenticación.

Almacenamiento de tokens

Para almacenar los tokens devueltos de la forma más segura posible, todos los tokens se guardan en una caché local. El ID Token y el Token de acceso se almacenan en pares, y los valores de y scope se usan para recuperar los tokens cuando sea necesario. Además, los tokens de la caché se eliminan en cuanto expira el ID Token o el Token de acceso, de modo que, si un token está en la caché, puede asumirse que sigue siendo válido.

Llamar a APIs

El método getTokenSilently() se usa para aprovechar primero la caché de tokens y, si no hay ninguno, inicia un iframe invisible para obtener un token nuevo. Para ello, todas las solicitudes a APIs pueden usar este método para construir el encabezado Bearer sin necesidad de lógica adicional para gestionar tokens expirados. En la Quickstart, la vista ExternalService realiza una solicitud a la API de Express mediante esta funcionalidad.

Avisar a los usuarios para que continúen con sus sesiones

Si un usuario no ha realizado ninguna acción que haga que se actualice la sesión de Auth0, Auth0 recomienda que muestres un aviso para que el usuario elija continuar explícitamente con su sesión. Este enfoque permite que la sesión quede inactiva si el usuario ya no está presente, pero, en caso contrario, proporciona una forma de activar la renovación silenciosa del token para que pueda continuar con su sesión sin que se le vuelvan a pedir credenciales. Para obtener más información sobre los temporizadores de inactividad y las ventanas modales de tiempo de espera, consulta URL de cierre de sesión específicas de la aplicación.

Flujo de ejemplo

  1. Autenticación inicial
  2. Mantener la sesión de Auth0
  3. SSO sin interrupciones
  4. solicitar al usuario que extienda la sesión
  5. El usuario cierra sesión explícitamente en la aplicación
  6. El usuario vuelve a la aplicación inicial después de cerrar sesión

Autenticación inicial

  1. Se abre una nueva pestaña
  2. Se solicita iniciar sesión
  3. El usuario introduce sus credenciales
  4. Se establece la cookie de SSO (con vencimiento)
  5. Se realiza el intercambio de tokens
Diagrama del flujo de autenticación inicial

Mantener la sesión de Auth0

  1. El usuario solicita datos de un recurso protegido
  2. Se llama a getTokenSilently()
  3. Se recupera el recurso
  4. El usuario actualiza los datos del recurso protegido
  5. Se llama a getTokenSilently()
    1. Se abre un iframe
    2. Se realiza el intercambio del token
  6. Se actualiza el recurso
Diagrama de mantenimiento de una sesión

SSO sin interrupciones

  1. El usuario accede a una ruta privada
  2. Comprueba con isAuthenticated()
  3. Si devuelve false, loginWithRedirect()
Diagrama del flujo de SSO sin interrupciones para las sesiones

Solicitar al usuario que extienda la sesión

  1. A los 240 segundos, muestre un modal de 60 segundos para pedir al usuario que mantenga activa la sesión
  2. Si decide mantener la sesión, getTokenSilently()
Diagrama en el que se solicita a un usuario que mantenga una sesión

El usuario cierra sesión explícitamente en la aplicación

  1. El usuario decide cerrar sesión
  2. Se llama a logout()
    1. Se borra la caché de tokens
    2. Se llama a /oidc/logout
    3. Se borra la cookie de SSO y se eliminan los datos de la sesión
    4. Se redirige al usuario a la página de cierre de sesión
Diagrama de un usuario cerrando sesión

El usuario vuelve a la aplicación inicial después de cerrar sesión

  1. El usuario solicita datos de un recurso protegido
  2. Se llama a getTokenSilently()
  3. Comportamiento según la aplicación
Diagrama del usuario que vuelve a la aplicación después de cerrar sesión

Sesiones de larga duración

Auth0 admite sesiones de larga duración para planes empresariales. Con las sesiones de larga duración, puede configurar límites de sesión con hasta 100 días de inactividad (idle timeout) y hasta un año de duración total (absolute timeout). Si maneja plazos trimestrales, mensuales o de otro tipo, esto le permite reducir la fricción para los usuarios finales y proporcionar acceso a contenido y funciones de bajo riesgo. Además, las empresas de medios pueden aprovechar las sesiones de larga duración para mejorar la experiencia de usuario mediante un acceso fluido al contenido. También puede optar entre sesiones de larga duración y validación de contraseña en función de sus requisitos de experiencia de usuario y seguridad. Los detalles del flujo de trabajo cambian en el caso de una sesión de larga duración, en la que la sesión de la aplicación probablemente sea más corta que la sesión de inicio de sesión único (SSO). Para obtener más información, consulte Configurar límites de duración de la sesión y Actualizar la duración del token de acceso.

Más información