Questo articolo spiega come gestire le sessioni con Identity-Aware Proxy (IAP) se utilizzi identità esterne per l'autenticazione.
Aggiornamento delle sessioni
Le sessioni di Identity Platform sono valide per un'ora. Quando una sessione scade, la tua app deve reindirizzare alla pagina di autenticazione. La pagina di autenticazione contiene il token di aggiornamento di Identity Platform. Finché le credenziali dell'utente sono ancora valide, puoi utilizzarle per la riconferma dell'autenticazione senza mostrare alcuna interfaccia utente.
Se l'utente ha cambiato di recente la propria email o password o se si è verificata un'altra azione che ha revocato il token, dovrà completare di nuovo il flusso di autenticazione.
Gestione delle richieste non AJAX
Le richieste non AJAX vengono gestite automaticamente utilizzando un reindirizzamento dell'applicazione, supponendo che la pagina di autenticazione sia configurata correttamente.
Gestione delle richieste AJAX
Chrome e altri browser stanno eliminando i cookie di terze parti. I consigli per effettuare richieste AJAX in questa pagina non funzioneranno se i cookie di terze parti sono disattivati. Tuttavia, i consigli forniti rimarranno funzionali se sia l'origine sia la destinazione delle richieste AJAX provengono dallo stesso sito.
Per istruzioni su come gestire i cookie di terze parti in Chrome, vedi Eliminare, consentire e gestire i cookie in Chrome.
Se invii una richiesta AJAX con un token scaduto, la richiesta restituirà un codice di stato 401: Unauthorized
. Implementa una delle seguenti soluzioni per gestire il problema:
- Modifica il codice dell'applicazione per gestire i codici di stato HTTP
401
. - Aggiungi un
iframe
all'applicazione per fare riferimento all'aggiornamento della sessione. - Chiedi agli utenti di caricare manualmente l'aggiornamento della sessione in una scheda separata.
Se ricevi un codice di stato 302
anziché 401
in risposta alle richieste AJAX, aggiungi un'intestazione X-Requested-With
con un valore XMLHttpRequest
.
In questo modo, IAP viene informato che la richiesta proviene da JavaScript.
Gestione programmatica di HTTP 401
La gestione programmatica dei codici di stato HTTP 401
è il modo consigliato per aggiornare una sessione AJAX. Per farlo:
Aggiorna il codice dell'applicazione per gestire l'errore.
Aggiungi un gestore che apra una finestra per autenticare nuovamente l'utente, quindi la chiuda al termine del processo.
Utilizzo di un iframe
Se non riesci a gestire 401
HTTP in modo programmatico, la soluzione migliore è aggiungere un iframe
all'applicazione che rimandi al ricalcolo della sessione.
L'utilizzo di un iframe richiede la configurazione di una pagina di accesso personalizzata nello stesso dominio dell'app web protetta da IAP. In caso contrario, gli utenti riscontreranno errori cross-origin. Per ulteriori informazioni sulla configurazione della pagina di accesso, consulta la sezione sulla creazione di una pagina di accesso personalizzata.
Esempio di utilizzo di un iframe:
<iframe src="https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER" style="width:0;height:0;border:0; border:none;"></iframe>
Caricamento dell'aggiornamento della sessione
Come ultima risorsa, puoi chiedere agli utenti di caricare manualmente l'aggiornamento della sessione. Aggiungi indicazioni all'applicazione o alla relativa documentazione per invitare gli utenti ad aprire il seguente URL in una scheda separata:
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Disconnessione degli utenti
Per far uscire un utente da una risorsa IAP, utilizza il parametro di query
?gcp-iap-mode=GCIP_SIGNOUT
. Ad esempio, in un'app App Engine, l'URL sarà simile a questo:
https://example.com/some/path?gcp-iap-mode=GCIP_SIGNOUT
Gli utenti verranno reindirizzati alla pagina di accesso dopo la disconnessione.
Per scollegare un utente da tutte le risorse e le sessioni, reindirizzalo all'URL di autenticazione con la chiave API e mode=signout
aggiunti come parametri. Ad esempio:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Gli utenti rimarranno nella pagina al termine della disconnessione. Valuta la possibilità di implementare il callback completeSignOut()
nell'oggetto AuthenticationHandler
per fornire all'utente un feedback che lo informi che ha eseguito la disconnessione correttamente.
Passare da un tenant all'altro
In alcuni casi, un utente potrebbe voler eseguire l'autenticazione con più tenant per la stessa risorsa IAP. Ad esempio, potrebbero appartenere a più tenant che concedono diversi livelli di accesso e voler passare a un tenant con meno o più privilegi.
Per riavviare forzatamente la procedura di selezione dell'organizzazione, utilizza
?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Ad esempio, in un'app App Engine,
l'URL potrebbe avere il seguente aspetto:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE
Passaggi successivi
- Creare un'interfaccia utente per l'autenticazione con FirebaseUI
- Creare un'interfaccia utente per l'autenticazione personalizzata