En este artículo, se explica cómo administrar sesiones con Identity-Aware Proxy (IAP) si utilizas identidades externas para la autenticación.
Sesiones de actualización
Las sesiones de Identity Platform tienen una validez de una hora. Cuando una sesión caduca, tu aplicación debe redireccionar a la página de autenticación. La página de autenticación contiene el token de actualización de Identity Platform. Siempre que la credencial del usuario siga siendo válida, puedes utilizarla para volver a autenticarte sin mostrar ninguna IU.
Si el usuario cambió recientemente su dirección de correo electrónico o contraseña, o realizó alguna otra acción que revocó su token, deberá volver a completar el proceso de autenticación.
Cómo manejar solicitudes que no son AJAX
Las solicitudes que no son AJAX se manejan automáticamente con un redireccionamiento de la aplicación, suponiendo que la página de autenticación está configurada correctamente.
Cómo manejar solicitudes AJAX
Chrome y otros navegadores se darán de baja gradualmente cookies de terceros. Las recomendaciones para realizar solicitudes AJAX en esta página no funcionarán si las cookies de terceros están inhabilitadas. Sin embargo, las recomendaciones proporcionadas seguirán funcionando si el origen y el destino de las solicitudes AJAX provienen del mismo sitio.
Para obtener instrucciones sobre cómo administrar cookies de terceros en Chrome, consulta Borrar, permitir y administrar cookies en Chrome.
Si envías una solicitud AJAX con un token vencido, la solicitud mostrará un código de estado 401: Unauthorized
. Implementa una de las siguientes soluciones para manejar esto:
- Modifica el código de la aplicación para controlar los códigos de estado HTTP
401
. - Agrega un
iframe
a tu aplicación para que apunte a la actualización de la sesión. - Indícales a tus usuarios que carguen manualmente la actualización de la sesión en una pestaña aparte.
Si recibes un código de estado 302
en lugar de 401
en respuesta a solicitudes AJAX, agrega un encabezado X-Requested-With
con un valor de XMLHttpRequest
.
Esto informa a IAP que la solicitud se origina en JavaScript.
Administra HTTP 401 de manera programática
Administrar de manera programática los códigos de estado HTTP 401
es la manera recomendada de actualizar una sesión AJAX. Para ello, haz lo siguiente:
Actualiza el código de la aplicación para controlar el error.
Agrega un controlador que abra una ventana para volver a autenticar al usuario y, luego, ciérralo cuando se complete el proceso.
Usa un iframe
Si no puedes administrar HTTP 401
de manera programática, la siguiente mejor solución es agregar un iframe
a tu aplicación que apunte a la actualización de la sesión.
Por ejemplo:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
Carga el actualizador de la sesión
Como último recurso, puedes indicar a tus usuarios que carguen manualmente la actualización de la sesión. Agrega indicaciones a tu aplicación o a la documentación que indique a los usuarios que abran la siguiente URL en una pestaña aparte:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Cierre de sesión de los usuarios
Para que un usuario salga 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 se ve así:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Se redireccionará a los usuarios a la página de acceso después de que salieron de la sesión.
Para que un usuario salga de todos los recursos y las sesiones, redirecciónalo a tu
la URL de autenticación con tu clave de API y mode=signout
agregado como parámetros. Por ejemplo:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Los usuarios permanecerán en la página después de que finalice el cierre de sesión. Considera implementar la devolución de llamada completeSignOut()
en el objeto AuthenticationHandler
para comentarle al usuario que el cierre de sesión se realizó correctamente.
Alterna entre instancias
En algunos casos, es posible que un usuario desee autenticarse con varias instancias para el mismo recurso de IAP. Por ejemplo, es posible que pertenezcan a varias instancias que otorguen diferentes niveles de acceso y que deseen cambiar a una instancia con menos o más privilegios.
Para forzar el reinicio del proceso de selección de la instancia, usa ?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Por ejemplo, en una aplicación de App Engine, la URL podría verse así:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE