Cet article explique comment gérer des sessions avec Identity-Aware Proxy (IAP) si vous utilisez des identités externes pour l'authentification.
Actualiser des sessions
Les sessions Identity Platform sont valides pendant une heure. Lorsqu'une session arrive à expiration, votre application doit rediriger les utilisateurs vers la page d'authentification. Cette page contient le jeton d'actualisation Identity Platform. Tant que les identifiants de l'utilisateur sont encore valides, vous pouvez les utiliser pour la réauthentification sans afficher d'UI.
Si l'utilisateur a récemment modifié son adresse e-mail ou son mot de passe, ou si une autre action a révoqué son jeton, il doit de nouveau effectuer le flux d'authentification.
Traiter les requêtes non-AJAX
Les requêtes non-AJAX sont traitées automatiquement à l'aide d'une redirection d'application, à condition que la page d'authentification soit correctement configurée.
Traiter les requêtes AJAX
Chrome et d'autres navigateurs abandonnent progressivement les cookies tiers. Les recommandations concernant l'exécution de requêtes AJAX sur cette page ne fonctionneront pas si les cookies tiers sont désactivés. Toutefois, les recommandations fournies restent fonctionnelles si la source et la cible des requêtes AJAX proviennent du même site.
Pour savoir comment gérer les cookies tiers dans Chrome, consultez Supprimer, autoriser et gérer les cookies dans Chrome.
Si vous envoyez une requête AJAX avec un jeton arrivé à expiration, la requête affiche un code d'état 401: Unauthorized
. Pour traiter ce code d'état, mettez en œuvre l'une des solutions suivantes :
- Modifiez le code de votre application de façon qu'elle gère les codes d'état HTTP
401
. - Ajoutez à votre application un
iframe
qui pointe vers l'actualisateur de session. - Demandez à vos utilisateurs de charger manuellement l'actualisateur de session dans un onglet distinct.
Si vous recevez un code d'état 302
au lieu de 401
en réponse à des requêtes AJAX, ajoutez un en-tête X-Requested-With
avec la valeur XMLHttpRequest
.
Cela indique à IAP que la requête provient de JavaScript.
Gérer de manière automatisée les codes d'état HTTP 401
La gestion automatisée des codes d'état HTTP 401
est la méthode recommandée pour actualiser une session AJAX. Procédez comme suit :
Mettez à jour le code de votre application de façon à traiter l'erreur.
Ajoutez un gestionnaire qui ouvre une fenêtre pour réauthentifier l'utilisateur, puis la ferme une fois le processus terminé.
Utiliser un iFrame
Si vous ne pouvez pas gérer les codes d'état HTTP 401
de manière automatisée, la meilleure solution consiste à ajouter à votre application un iframe
qui pointe vers l'actualisateur de session.
L'utilisation d'un iframe nécessite de configurer une page de connexion personnalisée sur le même domaine que l'application Web sécurisée par IAP. Sinon, les utilisateurs rencontreront des erreurs inter-origines. Pour en savoir plus sur la configuration de la page de connexion, consultez la section Créer une page de connexion personnalisée.
Exemple d'utilisation d'un iFrame:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
Charger l'actualisateur de session
En dernier recours, vous pouvez demander à vos utilisateurs de charger manuellement l'actualisateur de session. Dans votre application ou dans sa documentation, indiquez aux utilisateurs qu'ils doivent ouvrir l'URL suivante dans un onglet distinct :
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Déconnecter des utilisateurs
Pour déconnecter un utilisateur d'une ressource IAP, utilisez le paramètre de requête ?gcp-iap-mode=GCIP_SIGNOUT
. Par exemple, dans une application App Engine, l'URL se présente comme suit :
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Une fois déconnectés, les utilisateurs seront redirigés vers la page de connexion.
Pour déconnecter un utilisateur de toutes les ressources et sessions, redirigez-le vers votre URL d'authentification, en ajoutant votre clé API et mode=signout
comme paramètres. Exemple :
https://auth.example.com/?apiKey=API-KEY&mode=signout
Les utilisateurs resteront sur la page une fois la déconnexion terminée. Pensez à mettre en œuvre le rappel completeSignOut()
sur l'objet AuthenticationHandler
pour indiquer aux utilisateurs qu'ils se sont bien déconnectés.
Changer de locataire
Dans certains cas, un utilisateur peut vouloir s'authentifier auprès de plusieurs locataires pour la même ressource IAP. Par exemple, ils peuvent appartenir à plusieurs locataires qui accordent différents niveaux d'accès, et souhaitent passer à un locataire disposant de droits plus ou moins importants.
Pour forcer le redémarrage du processus de sélection du locataire, utilisez ?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Par exemple, dans une application App Engine, l'URL peut se présenter comme suit :
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE