Questo documento fornisce indicazioni per la risoluzione dei problemi e risposte alle domande frequenti su Identity-Aware Proxy (IAP).
Risoluzione dei 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.
Ispezione del traffico di rete
- Apri una nuova finestra 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 si verifica.
- Esamina le richieste di rete nel log per identificare la posizione dell'errore.
Analisi del traffico di rete
Quando accedi a un'applicazione protetta da IAP, viene visualizzata la pagina di accesso. Dopo l'autenticazione riuscita con il provider di identità, viene inviata una richiesta al dominio https://iap.googleapis.com per completare l'autenticazione prima che venga emesso un cookie IAP e che tu venga reindirizzato all'applicazione.
Puoi risolvere i problemi in base al dominio in cui si verifica l'errore:
- Errori su
iap.googleapis.com: se si verifica un errore nel dominioiap.googleapis.com, viene visualizzato un messaggio di errore dettagliato nella pagina. 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 protetto 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 quanto segue:
- App per l'ambiente standard App Engine e l'ambiente flessibile 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 nessun servizio di backend di bilanciamento del carico
IAP non può essere utilizzato con Cloud CDN.
Perché c'è un # alla fine del mio URL dopo aver eseguito l'accesso alla mia app?
In alcuni browser e in determinate condizioni, dopo l'autenticazione all'URL potrebbe essere aggiunto un #. 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 collegano 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 alle sessioni, vedi Gestione delle 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 della richiesta per indicare il supporto
per i reindirizzamenti.
Perché le richieste POST non attivano reindirizzamenti?
I browser non reindirizzano in risposta alle richieste POST. Invece,
IAP restituisce 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 aggiornamento delle sessioni)
Posso utilizzare IAP se ho disabilitato 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 è abilitato l'accesso basato su certificati)
Perché ricevo Server Error?
Se vedi:
The server encountered a temporary error and could not complete your request. Please try again in 30 seconds.
È possibile che il firewall stia bloccando gli 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 IP non riescono a raggiungere il backend, le tue applicazioni
non saranno accessibili.
Per le connessioni TCP IAP a VM specifiche, assicurati anche che la VM
accetti connessioni dall'intervallo 35.235.240.0/20.
Perché ricevo errori interni del server intermittenti?
Messaggi come An internal server error occurred while authorizing your request.
Error code X indicano errori di 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, trova la tua 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, consulta 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 di 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'intestazione AUTHORIZATION o PROXY-AUTHORIZATION 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, prova queste soluzioni:
- Evita i test di carico in produzione. Utilizza invece percorsi di rete alternativi che bypassano 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 in più progetti.
- Utilizza Apigee o soluzioni API Gateway simili per applicazioni basate su API.
- Contatta l'assistenzaGoogle Cloud per gli aumenti della quota se il problema è causato dalla crescita organica.
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 rivendicazioni di grandi dimensioni nel token ID possono causare il superamento dei limiti di dimensione del cookie di sessione IAP (in genere circa 4 KB). IAP memorizza le informazioni sulla sessione, incluse queste rivendicazioni, nei cookie del browser.
Il superamento del limite di dimensioni dei cookie di sessione può causare errori di accesso o loop di accesso infiniti. Per evitare questi problemi, valuta le seguenti azioni:
Ridurre le rivendicazioni: configura il tuo IdP di terze parti in modo che invii solo le rivendicazioni essenziali a Identity Platform. Ridurre al minimo le dimensioni e il numero di rivendicazioni incluse nel token.
Ispeziona le dimensioni dei cookie: utilizza gli strumenti per sviluppatori del browser per controllare le dimensioni dei cookie impostati nel dominio dell'applicazione. Cerca avvisi relativi alle dimensioni dei cookie, in particolare per i cookie correlati IAP.
Testa le rivendicazioni minime: configura temporaneamente il fornitore di identità per inviare il set di rivendicazioni più piccolo possibile. Se il problema si risolve, è confermato che la limitazione delle dimensioni dei cookie è la causa principale.
Perché ricevo un errore HTTP 502 con "ID client/secret OAuth dell'Account Google vuoto"?
Se accedi alla tua applicazione protetta da IAP e ricevi un errore
HTTP 502 Bad Gateway con il messaggio
Empty Google Account OAuth client ID(s)/secret(s)., IAP
non riesce a trovare le credenziali OAuth per la tua applicazione.
Questo errore si verifica in genere nei seguenti scenari:
- Il progetto non appartiene a un'organizzazione:il client OAuth gestito da Google predefinito è disponibile solo per i progetti che appartengono a un'Google Cloud organizzazione. Se il tuo progetto non appartiene a un'organizzazione, devi configurare le credenziali OAuth personalizzate per App Engine o per la tua piattaforma.
- Le credenziali OAuth sono state eliminate o non sono state configurate:se in precedenza hai configurato credenziali OAuth personalizzate e il client OAuth è stato eliminato, ricrea le credenziali nella pagina Credenziali e aggiorna le impostazioni IAP come descritto in Utilizzare client OAuth personalizzati con IAP.
Codici di errore
La tabella seguente elenca i codici di errore e i messaggi comuni restituiti durante la configurazione e l'utilizzo di IAP.
| Codice di errore | Descrizione | Risoluzione dei problemi |
|---|---|---|
| 7, HTTP 502 | ID client OAuth o secret vuoto (Empty Google Account OAuth client ID(s)/secret(s).) |
Se il tuo progetto non appartiene a un'organizzazione, configura le credenziali OAuth personalizzate. In caso contrario, visita la pagina Credenziali per verificare l'ID client e il secret o controlla le impostazioni utilizzando i metodi API (GET per Compute Engine, GET per App Engine) e reimpostali con PATCH. Per saperne di più, consulta Errore HTTP 502. |
| 9 | Reindirizzamento OAuth non riuscito | Si tratta di un errore interno registrato automaticamente. 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 aggiornarlo utilizzando il comando gcloud compute backend-services update. |
| 9 (con regole di instradamento del percorso) | Reindirizzamento OAuth non riuscito | Crea varianti delle 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/ che per /path. |
| 11 | ID client OAuth configurato in modo errato | Controlla l'ID client e il client 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 reimpostale con PATCH. |
| 13 | Token OIDC non valido | Vai alla pagina delle credenziali per verificare che l'ID client non sia stato eliminato o modificato in modo errato. |
| 51 | Il browser non supporta il pool di connessioni | Chiedi agli utenti finali di aggiornare i browser alle versioni correnti. Per ulteriori dettagli sui requisiti di connessione, consulta 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 la 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, consulta Creare una voce della mappa dei certificati. |
| 53 | Nome host non presente nei domini consentiti | Un amministratore deve aggiungere il tuo nome host all'elenco dei domini consentiti. Per istruzioni, consulta Limitare l'accesso alle risorse. |
| 253, HTTP 429 | Quota di richieste superata | Hai raggiunto i limiti delle richieste (360.000/min per ogni tipo di richiesta). Valuta la possibilità di distribuire i workload su più progetti, implementare la limitazione delle richieste lato client o contattare l'assistenza per aumenti di quota, se necessari per una crescita legittima. |
| 551 | Acquisti IAP abilitati in più posizioni | Non puoi abilitare IAP sia sulla regola di forwarding sia sul servizio di backend. Disabilitalo in una località seguendo le indicazioni riportate in Abilitare per Compute Engine. |
| 700, 701 | Problemi relativi al provider di pool di forza lavoro | Configura esattamente un provider per il pool di forza lavoro. Per i requisiti dettagliati, consulta la sezione Limitazioni dei pool di forza lavoro. |
| 705 | ID client OAuth mancante per l'identità della forza lavoro | Segui l'intera 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 inoltre che le regole firewall consentano le connessioni su questa 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 | Conferma di aver assegnato il ruolo Utente tunnel per la risorsa tramite la pagina IAP e verifica che la VM esista e sia in esecuzione. |
| 4047 | L'istanza non esiste o è arrestata | Assicurati che la VM sia accesa e abbia completato la sequenza di avvio. |
Se non riesci a risolvere il problema o non vedi l'errore elencato in
questa pagina, contatta l'assistenza clienti Google Cloud con una descrizione dell'errore e della
risposta che ricevi da una chiamata GET all'API. Assicurati di rimuovere il
secret client dalla risposta.