Come posso risolvere l'errore di chiamata all'API AWS STS AssumeRoleWithWebIdentity “InvalidIdentityToken”?
La chiamata all'API AWS Security Token Service (AWS STS) AssumeRoleWithWebIdentity non è riuscita con un errore “InvalidIdentityToken”.
Breve descrizione
Se la chiamata API AssumeRoleWithWebIdentity fallisce, potresti ricevere un errore simile al seguente messaggio:
«Si è verificato un errore (InvalidIdentityToken) durante la chiamata all'operazione AssumeRoleWithWebIdentity. Impossibile recuperare la chiave di verifica dal tuo provider di identità.”
Questo errore può verificarsi nei seguenti scenari:
- L'URL .well\ _known e jwks\ _uri del gestore di identità del provider (IdP) non sono accessibili dalla rete Internet pubblica.
- Un firewall personalizzato blocca le richieste.
- C'è una latenza di oltre 5 secondi nelle richieste API dall'IdP per raggiungere l'endpoint AWS STS.
- STS sta facendo troppe richieste al tuo URL .well\ _known o al jwks\ _uri dell'IdP.
Nota: Poiché questo problema non funziona sul lato client, la cronologia degli eventi di AWS CloudTrail non registra questo errore.
Risoluzione
Verifica l'accesso pubblico per .well\ _known e jwks\ _uri
Verifica che l'URL .well\ _known e jwks\ _uri dell'IdP siano accessibili pubblicamente. Questo può essere verificato utilizzando il browser, il comando Windows o il comando Linux. A tale scopo, completa una delle seguenti azioni:
Per verificare l'accesso, accedi ai seguenti link nel tuo browser:
- https://BASE_SERVER_URL/.well-known/openid-configuration
- https://BASE_SERVER_URL/.well-known/jwks.json
\ -oppure-
Esegui i seguenti comandi:
Windows:
wget https://BASE_SERVER_URL/.well-known/openid-configuration wget https://BASE_SERVER_URL/.well-known/jwks.json
**Linux: **
curl https://BASE_SERVER_URL/.well-known/openid-configuration curl https://BASE_SERVER_URL/.well-known/jwks.json
Nota: Per confermare se puoi accedere ai link, controlla il codice di ** stato ** 200 nella risposta alla richiesta.
Controlla le impostazioni del firewall
Se l'URL .well\ _known e jwks\ _uri dell'IdP non sono accessibili, controlla le impostazioni del firewall. Assicurati che i domini non siano in un elenco di utenti negati.
A seconda della configurazione corrente del firewall, potrebbe essere necessario aggiungere i domini a un elenco di utenti consentiti.
Se le impostazioni del firewall non sono accessibili, utilizza il browser con un dispositivo di una rete diversa, ad esempio un telefono. Per verificare l'accesso dal browser, utilizzare le istruzioni al passaggio 1. Se la richiesta Web ha esito positivo, il firewall sta bloccando la richiesta.
Se il server che effettua la chiamata API ** AssumeRoleWithWebIdentity** è un'istanza Amazon Elastic Compute Cloud (Amazon EC2), controlla le impostazioni di configurazione. Per istruzioni, vedi Perché non riesco a connettermi a un sito Web ospitato sulla mia istanza EC2?
Verifica la latenza delle operazioni
Controlla la latenza per l'intera operazione. Ciò include i seguenti attributi:
- Tempo di richiesta/risposta da STS
- Tempo di richiesta/risposta da IdP
Ridurre al minimo la latenza STS
Usa gli endpoint regionali AWS anziché gli endpoint globali per il servizio STS. Questo verifica che le richieste vengano indirizzate al server geograficamente più vicino per ridurre al minimo la latenza. Per ulteriori informazioni, consulta Scrivere il codice per utilizzare le regioni AWS STS.
Nota: Per gli SDK AWS, il parametro Region indirizza l'endpoint di destinazione della richiesta al luogo in cui viene effettuata la chiamata all'interno della configurazione sts\ _regional\ _endpoint.
Valuta la latenza IdP
L'IdP effettua richieste all'endpoint STS. Per verificare se la richiesta all'endpoint STS richiede troppo tempo, analizza i pacchetti in uscita dell'IdP all'interno dei log IdP.
Nota: Se la richiesta dall'IdP all'endpoint STS richiede più di 5 secondi, la richiesta potrebbe scadere e non riuscire. Puoi contattare il tuo provider di identità per richiedere un aumento della disponibilità geografica per ridurre la latenza per questa chiamata API.
(Facoltativo) Usa il backoff esponenziale e aumenta i tentativi
L'API AssumeRoleWithWebIdentity dipende dal recupero di informazioni dal provider di identità (IdP). Per evitare errori di throttling, la maggior parte degli IdP ha dei limiti alle API e le chiamate API potrebbero non recuperare le chiavi richieste dall'IdP. Per aiutarti ad assumere con successo un ruolo se l'API presenta problemi intermittenti nel raggiungere il tuo IdP, procedi nel seguente modo:
- Usa il backoff esponenziale.
- Aumenta i tentativi e imposta un numero massimo di tentativi. Inoltre, implementa un intervallo di ritardo massimo. Per ulteriori informazioni, consulta Ritentativi di errore e backoff esponenziale in AWS.
Riduci le richieste STS a .well\ _known e jwks\ _uri
Se il tuo JSON Web Key Set (JWKS) imposta le intestazioni di risposta Pragma: no-cache o Cache-Control: no-cache di risposta, allora STS non memorizza nella cache i tuoi JWKS. Per le chiavi a cui si fa riferimento in un ID\ _TOKEN ma non si trovano nella cache, STS esegue un callback. In questo caso, STS potrebbe fare troppe richieste al tuo URL .well\ _known e jwks\ _uri.
Pertanto, per ridurre i callback da STS, verifica che il tuo JWKS non imposti nessuna di queste intestazioni di risposta. Ciò consente a STS di memorizzare nella cache i tuoi JWKS.
Informazioni correlate
Benvenuto nella pagina di riferimento delle API di AWS Security Token Service
Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata un anno fa