Questo articolo spiega come gestire le sessioni con Identity-Aware Proxy (IAP) se utilizzi identità esterne per l'autenticazione.
Sessioni di aggiornamento
Le sessioni di Identity Platform sono valide per un'ora. Quando una sessione scade, l'app deve reindirizzare alla pagina di autenticazione. L'autenticazione contiene il token di aggiornamento di Identity Platform. Se l'attività dell'utente la credenziale è ancora valida, puoi utilizzarla per la riautenticazione senza mostrare qualsiasi interfaccia utente.
Se l'utente ha modificato di recente il proprio indirizzo email o la password oppure se ha eseguito un'altra azione che ha revocato il token, dovrà completare l'autenticazione flusso.
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 operativi se sia l'origine che 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
gestisci questo:
- Modifica il codice dell'applicazione per gestire i codici di stato HTTP
401
. - Aggiungi un
iframe
all'applicazione per puntare al ripasso della sessione. - Chiedi agli utenti di caricare manualmente il riepilogo 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
.
Questo informa IAP che la richiesta proviene da JavaScript.
Gestione programmatica di HTTP 401
La gestione programmatica dei codici di stato HTTP 401
è il modo consigliato per
aggiorna una sessione AJAX. Per farlo:
Aggiorna il codice dell'applicazione per gestire l'errore.
Aggiungi un gestore che apre una finestra per autenticare nuovamente l'utente, quindi chiude una volta completato il processo.
Utilizzare 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.
Ad esempio:
<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 in corso...
Come ultima risorsa, puoi chiedere agli utenti di caricare manualmente l'aggiornamento della sessione. Aggiungi indicazioni alla tua applicazione o alla relativa documentazione che indica agli utenti di aprire il seguente URL in una :
https://example.com/some/path?gcp-iap-mode=SESSION_REFRESHER
Disconnessione degli utenti
Per disconnettere 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
Dopo essersi disconnessi, gli utenti verranno reindirizzati alla pagina di accesso.
Per disconnettere un utente da tutte le risorse e le sessioni, reindirizzalo al tuo
URL di autenticazione con la tua chiave API e mode=signout
aggiunto come parametro. Ad esempio:
https://auth.example.com/?apiKey=API-KEY&mode=signout
Gli utenti rimarranno nella pagina al termine della disconnessione. Valuta l'implementazione
il callback completeSignOut()
sull'oggetto AuthenticationHandler
per
fornire un feedback all'utente circa la riuscita della disconnessione.
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 vogliono passare a un tenant con meno o maggiori privilegi.
Per forzare il riavvio del processo di selezione dei tenant, usa
?gcp-iap-mode=CLEAR_LOGIN_COOKIE
. Ad esempio, in un'app di App Engine,
l'URL potrebbe avere il seguente aspetto:
https://PROJECT-ID.appspot.com/some/path?gcp-iap-mode=CLEAR_LOGIN_COOKIE
Passaggi successivi
- Crea una UI di autenticazione con FirebaseUI
- Crea un'interfaccia utente di autenticazione personalizzata