En este artículo se explica cómo gestionar sesiones con Identity-Aware Proxy (IAP) si usas identidades externas para la autenticación.
Actualizar sesiones
Las sesiones de Identity Platform son válidas durante una hora. Cuando caduca una sesión, tu aplicación debe redirigir a la página de autenticación. La página de autenticación contiene el token de actualización de Identity Platform. Siempre que las credenciales del usuario sigan siendo válidas, puedes usarlas para volver a autenticarlo sin mostrar ninguna interfaz de usuario.
Si el usuario ha cambiado recientemente su correo o contraseña, o se ha producido alguna otra acción que haya revocado su token, deberá completar el flujo de autenticación de nuevo.
Gestionar solicitudes que no son AJAX
Las solicitudes que no son AJAX se gestionan automáticamente mediante una redirección de la aplicación, siempre que la página de autenticación esté configurada correctamente.
Gestionar solicitudes AJAX
Chrome y otros navegadores están eliminando gradualmente las cookies de terceros. Las recomendaciones para hacer solicitudes AJAX de esta página no funcionarán si las cookies de terceros están inhabilitadas. Sin embargo, las recomendaciones proporcionadas seguirán funcionando si tanto la fuente como el destino de las solicitudes AJAX son del mismo sitio.
Para obtener instrucciones sobre cómo gestionar las cookies de terceros en Chrome, consulta el artículo Eliminar, permitir y gestionar cookies en Chrome.
Si envías una solicitud AJAX con un token caducado, la solicitud devolverá un código de estado 401: Unauthorized
. Implementa una de las siguientes soluciones para gestionar este problema:
- Modifica el código de tu aplicación para gestionar los códigos de estado
401
HTTP. - Añade un
iframe
a tu aplicación para que apunte al actualizador de sesiones. - Indica a los usuarios que carguen manualmente el actualizador de sesiones en otra pestaña.
Si recibes el código de estado 302
en lugar de 401
en respuesta a solicitudes AJAX, añade un encabezado X-Requested-With
con el valor XMLHttpRequest
.
De esta forma, se informa a las compras en la aplicación de que la solicitud procede de JavaScript.
Gestionar de forma programática el error HTTP 401
La forma recomendada de actualizar una sesión AJAX es gestionar de forma programática los códigos de estado HTTP 401
. Para hacer esto:
Actualiza el código de tu aplicación para gestionar el error.
Añade un controlador que abra una ventana para volver a autenticar al usuario y, a continuación, la cierre cuando se complete el proceso.
Usar un iframe
Si no puedes gestionar HTTP 401
de forma programática, la siguiente mejor solución es añadir un iframe
a tu aplicación que apunte al actualizador de sesiones.
Para usar un iframe, debes configurar una página de inicio de sesión personalizada en el mismo dominio que la aplicación web protegida por IAP. De lo contrario, los usuarios se encontrarán con errores de origen cruzado. Para obtener más información sobre la configuración de la página de inicio de sesión, consulta el artículo sobre cómo crear una página de inicio de sesión personalizada.
Ejemplo de uso de un iframe:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
Cargando el actualizador de la sesión
Como último recurso, puedes indicar a tus usuarios que carguen manualmente el actualizador de sesiones. Añade a tu aplicación o a su documentación instrucciones para que los usuarios abran la siguiente URL en una pestaña independiente:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Cerrar la sesión de los usuarios
Para cerrar la sesión de un usuario de un recurso de IAP, usa el parámetro de consulta
?gcp-iap-mode=GCIP_SIGNOUT
. Por ejemplo, en una aplicación de App Engine, la URL tiene este aspecto:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Se redirigirá a los usuarios a la página de inicio de sesión después de cerrar sesión.
Para cerrar la sesión de un usuario en todos los recursos y sesiones, redirígelo a tu URL de autenticación con tu clave de API y mode=signout
añadidos como parámetros. Por ejemplo:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Los usuarios permanecerán en la página una vez que se haya cerrado la sesión. Implementa la retrollamada completeSignOut()
en el objeto AuthenticationHandler
para informar al usuario de que ha cerrado sesión correctamente.
Cambiar de un arrendatario a otro
En algunos casos, es posible que un usuario quiera autenticarse con varios arrendatarios para acceder al mismo recurso de IAP. Por ejemplo, pueden pertenecer a varios inquilinos que concedan diferentes niveles de acceso y quieran cambiar a un inquilino con menos o más privilegios.
Para forzar el reinicio del proceso de selección del arrendatario, usa ?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Por ejemplo, en una aplicación de App Engine,
la URL podría tener este aspecto:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE
Siguientes pasos
- Crear una interfaz de autenticación con FirebaseUI
- Crear una interfaz de autenticación personalizada