Questo documento fornisce indicazioni per la risoluzione dei problemi e risposte alle domande frequenti su Identity-Aware Proxy (IAP).
Risolvere i problemi di accesso web
Se riscontri errori durante l'accesso o quando accedi all'applicazione, l'ispezione del traffico di rete del browser può aiutarti a diagnosticare il problema.
Ispezionare il traffico di rete
- Apri una nuova finestra di navigazione in incognito (Chrome) o privata nel browser.
- Apri gli strumenti per sviluppatori del browser e vai alla scheda Rete.
- Seleziona l'opzione Conserva log per acquisire tutte le richieste durante i reindirizzamenti.
- Riproduci il problema accedendo all'URL in cui riscontri problemi.
- Esamina le richieste di rete nel log per identificare il punto in cui si è verificato l'errore.
Analizzare il traffico di rete
Quando accedi a un'applicazione protetta da IAP, vieni reindirizzato alla pagina di accesso. Dopo l'autenticazione riuscita con il provider di identità, viene effettuata una richiesta al dominio https://iap.googleapis.com per completare l'autenticazione prima che venga emesso un cookie IAP e tu venga reindirizzato all'applicazione.
Puoi risolvere gli errori in base al dominio in cui si verificano:
- Errori su
iap.googleapis.com: se si verifica un errore nel dominioiap.googleapis.com, nella pagina viene visualizzato un messaggio di errore dettagliato. Se l'errore è correlato alle impostazioni IAP, ad esempio problemi con il client OAuth, modifica le impostazioni. Se riscontri errori del client che non sai come risolvere o se visualizzi errori del server, apri un Google Cloud ticket di assistenza. - Errori nel dominio dell'applicazione: se si verifica un errore dopo il reindirizzamento al dominio dell'applicazione protetta da IAP, viene visualizzato un codice di errore. Per informazioni sugli errori comuni, consulta la sezione Codici di errore. Se non riesci a risolvere il problema, apri un Google Cloud ticket di assistenza.
Quali app posso proteggere con IAP?
IAP può essere utilizzato con:
- App dell'ambiente standard di App Engine e dell'ambiente flessibile di App Engine
- Istanze Compute Engine con servizi di backend di bilanciamento del carico HTTP(S)
- Container Google Kubernetes Engine
- App Cloud Run con servizi di backend di bilanciamento del carico HTTP(S)
- Cloud Run con un clic e senza servizi di backend di bilanciamento del carico
IAP non può essere utilizzato con Cloud CDN.
Perché dopo aver eseguito l'accesso alla mia app c'è un # alla fine dell'URL?
In alcuni browser e in determinate condizioni, dopo l'autenticazione potrebbe essere aggiunto un # all'URL. Questo è normale e non causerà problemi durante l'accesso.
Perché le mie richieste non vanno a buon fine e restituiscono 405 Method Not Allowed?
In genere, questo accade quando i cookie non sono allegati alle richieste. I metodi JavaScript non allegano i cookie per impostazione predefinita.
I diversi metodi di richiesta richiedono approcci diversi:
- Per
XMLHttpRequest, impostawithCredentialssutrue. - Per l'API
Fetch,
imposta
credentialssuincludeosame-origin.
Per la gestione degli errori relativi alla sessione, vedi Gestire le sessioni IAP.
Perché ricevo un HTTP 401 Unauthorized anziché un 302 Redirect?
IAP invia un 302 Redirect solo quando il client è configurato per gestire i reindirizzamenti.
Aggiungi HTTP Accept="text/html,*/*" alle intestazioni delle richieste per indicare il supporto
per i reindirizzamenti.
Perché le richieste POST non attivano i reindirizzamenti?
I browser non reindirizzano in risposta alle richieste POST. IAP restituisce invece un codice di stato 401 Unauthorized.
Per le richieste POST alle risorse protette da IAP, includi una delle seguenti opzioni:
- Un token ID in un'intestazione
Authorization: Bearer - Cookie validi (vedi aggiornare le sessioni)
Posso utilizzare IAP se ho disattivato l'API?
Sì, le risorse protette da IAP rimangono accessibili quando l'API è disattivata, ma non potrai modificare le autorizzazioni IAM.
Come faccio a impedire agli utenti con il ruolo Proprietario di utilizzare IAP per TCP?
Idealmente, limita l'utilizzo del ruolo Proprietario (roles/owner) a favore di autorizzazioni più granulari. Per indicazioni, consulta le best practice
di IAM.
Se non è possibile, puoi bloccare IAP per TCP utilizzando le regole firewall.
Quale dominio utilizza IAP per TCP?
IAP utilizza i seguenti domini di proprietà di Google:
tunnel.cloudproxy.appmtls.tunnel.cloudproxy.app(quando l'accesso basato su certificati è abilitato)
Perché ricevo Server Error?
Se visualizzi:
The server encountered a temporary error and could not complete your request. Please try again in 30 seconds.
È possibile che il firewall blocchi gli indirizzi IP del bilanciatore del carico.
Verifica che il firewall consenta il traffico da 130.211.0.0/22 e 35.191.0.0/16. Se questi indirizzi IP non riescono a raggiungere il backend, le applicazioni non saranno accessibili.
Per le connessioni TCP IAP a VM specifiche, assicurati anche che la VM accetti le connessioni dall'intervallo 35.235.240.0/20.
Perché ricevo errori intermittenti del server interno?
I messaggi come An internal server error occurred while authorizing your request.
Error code X indicano errori del backend.
I codici di errore 1, 30, 62, 63, 64 o 703 in genere riflettono problemi temporanei. Implementa il backoff esponenziale per i nuovi tentativi.
Come correggere gli errori di Identity Platform (codice di errore 38)
Il codice di errore 38 indica che l'URL di autenticazione di Identity Platform per la tua identità esterna non è configurato correttamente in IAP.
Per trovare l'URL:
Vai alla pagina IAP.
Fai clic sulla scheda Applicazioni.
Nella colonna Risorsa, individua l'applicazione e seleziona la casella di controllo.
In URL di autenticazione o URL di accesso, assicurati che l'URL sia corretto.
Per scoprire come utilizzare le identità esterne con IAP, vedi Autenticare gli utenti con identità esterne.
Come posso risolvere gli errori di superamento della quota (codice di errore 429)?
Il codice di errore 429 si verifica quando l'applicazione supera i limiti delle richieste di IAP. Il servizio applica quote separate:
- Richieste basate sul browser:360.000 al minuto per progetto
- Richieste programmatiche:360.000 al minuto per progetto
Una richiesta programmatica è una richiesta che include un AUTHORIZATION o
PROXY-AUTHORIZATION header e nessun cookie IAP. Tutte le altre richieste (incluse quelle senza credenziali) sono considerate richieste del browser.
Questi limiti si applicano collettivamente a tutte le risorse protette da IAP nel tuo progetto.
Se riscontri errori relativi alla quota, valuta le seguenti soluzioni:
- Evita di eseguire test di carico in produzione. Utilizza invece percorsi di rete alternativi che ignorano IAP.
- Per il traffico da servizio a servizio, implementa il backoff esponenziale per gestire gli errori 429 in modo controllato.
- Distribuisci le applicazioni con traffico elevato su più progetti.
- Utilizza Apigee o soluzioni di gateway API simili per le applicazioni basate su API.
- Se la crescita organica sta causando il problema, contatta Google Cloud Support per richiedere aumenti della quota.
Problemi di accesso o comportamento imprevisto con IAP utilizzando Identity Platform
Quando utilizzi un provider di identità (IdP) di terze parti con Identity Platform, i dati delle attestazioni di grandi dimensioni nel token ID possono far sì che il cookie di sessione IAP superi i limiti di dimensione del browser (in genere circa 4 KB). IAP archivia le informazioni sulla sessione, incluse queste attestazioni, nei cookie del browser.
Il superamento del limite di dimensione dei cookie di sessione può causare errori di accesso o loop di accesso infiniti. Per evitare questi problemi, valuta le seguenti azioni:
Riduci le attestazioni: configura l'IdP di terze parti in modo che invii solo le attestazioni essenziali a Identity Platform. Riduci al minimo le dimensioni e il numero di attestazioni incluse nel token.
Ispeziona le dimensioni dei cookie: utilizza gli strumenti per sviluppatori del browser per controllare le dimensioni dei cookie impostati sul dominio dell'applicazione. Cerca avvisi relativi alle dimensioni dei cookie, in particolare per i cookie correlati a IAP.
Testa le attestazioni minime: configura temporaneamente l'IdP in modo che invii il set di attestazioni più piccolo possibile. Se il problema viene risolto, significa che la limitazione delle dimensioni dei cookie è la causa principale.
Codici di errore
La tabella seguente elenca i codici e i messaggi di errore comuni restituiti durante la configurazione e l'utilizzo di IAP.
| Codice di errore | Descrizione | Risoluzione dei problemi |
|---|---|---|
| 7 | ID client OAuth o secret vuoto | Visita la pagina Credenziali per verificare l'ID client e il secret. Se sembrano corretti ma non funzionano, utilizza i metodi API per controllare le impostazioni (GET per Compute Engine, GET per App Engine) e reimpostali con PATCH. |
| 9 | Reindirizzamento OAuth non riuscito | Si tratta di un errore interno di cui è stato eseguito il logging automatico. Non è necessario alcun intervento da parte tua. |
| 9 (con regole di riscrittura del percorso) | Reindirizzamento OAuth non riuscito | Le regole di riscrittura del percorso del bilanciatore del carico impediscono il completamento di OAuth. Assicurati che tutti i backend dietro il bilanciatore del carico utilizzino ID client OAuth identici. Puoi aggiornarli utilizzando il comando gcloud compute backend-services update. |
| 9 (con regole di routing del percorso) | Reindirizzamento OAuth non riuscito | Crea varianti di regole di percorso per entrambe le versioni di ogni percorso (con e senza barre finali) e indirizzale allo stesso backend. Ad esempio, includi regole sia per /path/ sia per /path. |
| 11 | ID client OAuth configurato in modo errato | Controlla l'ID client e il secret nella pagina Credenziali. Se sembrano corretti ma non funzionano, utilizza i metodi API per controllare le impostazioni (GET per Compute Engine, GET per App Engine) e reimpostali con PATCH. |
| 13 | Token OIDC non valido | Vai alla pagina Credenziali per verificare che l'ID client non sia stato eliminato o modificato in modo errato. |
| 51 | Il browser non supporta il connection pooling | Chiedi agli utenti finali di aggiornare i browser alle versioni attuali. Per ulteriori dettagli sui requisiti di connessione, vedi Limitare l'accesso alle risorse. |
| 52 | Mancata corrispondenza tra nome host e certificato SSL | L'amministratore di sistema deve aggiornare il certificato SSL in modo che corrisponda al nome host. Per indicazioni, consulta Limitare l'accesso alle risorse. |
| 52 (con voce della mappa dei certificati principale) | Mancata corrispondenza tra nome host e certificato SSL | IAP non supporta le voci della mappa dei certificati principali. Utilizza voci separate per mappare ogni certificato al nome host corretto. Per indicazioni, vedi Creare una voce della mappa dei certificati. |
| 53 | Nome host non presente nei domini consentiti | Un amministratore deve aggiungere il nome host all'elenco dei domini consentiti. Per istruzioni, vedi Limitare l'accesso alle risorse. |
| 253, HTTP 429 | Quota per le richieste superata | Hai raggiunto i limiti delle richieste (360.000/min per ogni tipo di richiesta). Valuta la possibilità di distribuire i carichi di lavoro su più progetti, implementare la limitazione delle richieste lato client o contattare l'assistenza per richiedere aumenti della quota, se necessario per una crescita legittima. |
| 551 | IAP abilitato in più posizioni | Non puoi abilitare IAP sia sulla regola di forwarding sia sul servizio di backend. Disabilitalo in una posizione seguendo le indicazioni riportate in Abilitare per Compute Engine. |
| 700, 701 | Problemi con il provider di pool di forza lavoro | Configura esattamente un provider per il pool di forza lavoro. Per i requisiti dettagliati, consulta Limitazioni dei pool di forza lavoro. |
| 705 | ID client OAuth mancante per l'identità della forza lavoro | Completa la procedura di configurazione: prima crea un ID client OAuth, poi aggiorna le impostazioni IAP. |
| 708 | Nome del pool di forza lavoro non valido | Verifica che il pool di forza lavoro esista e utilizzi il formato corretto: locations/global/workforcePools/WORKFORCE_POOL_ID. |
| 4003 | Problema di connessione o firewall | Verifica che il processo della VM sia in esecuzione e in ascolto sulla porta prevista. Verifica anche che le regole firewall consentano le connessioni su quella porta. |
| 4010 | Connessione chiusa dalla destinazione | Reimposta la VM. Se i problemi persistono, esamina auth.log (di solito in /var/log/) o utilizza la console seriale per una diagnostica più dettagliata. |
| 4033 | Problema di autorizzazione, esistenza o stato della VM | Verifica di aver assegnato il ruolo Utente tunnel per la risorsa tramite la pagina IAP e che la VM esista e sia in esecuzione. |
| 4047 | L'istanza non esiste o è arrestata | Assicurati che la VM sia accesa e che la sequenza di avvio sia stata completata. |
Se non riesci a risolvere il problema o se l'errore non è elencato in questa pagina, contatta l'assistenza clienti Google Cloud fornendo una descrizione dell'errore e della risposta che ricevi da una chiamata GET all'API. Assicurati di rimuovere il client secret dalla risposta.