Come posso risolvere l'errore di chiamata API AssuRuleWithWebIdentity di AWS STS "InvalidIdentityToken"?

Ultimo aggiornamento: 18/05/2022

La chiamata API AWS Security Token Service (AWS STS) AssumeRoleWithWebIdentity non è riuscita con un errore simile al seguente:

"Si è verificato un errore (InvalidIdentityToken) quando si chiama l'operazione AssuRuleWithWebIdentity. Impossibile recuperare la chiave di verifica dal provider di identità. "

Breve descrizione

Questo errore può verificarsi se:

  • L'URL .well_known e jwks_uri del provider di identità (IdP) sono inaccessibili da Internet pubblico.
  • Un firewall personalizzato sta bloccando le richieste.
  • C'è una latenza superiore a 5 secondi nelle richieste API dell'IdP per raggiungere l'endpoint AWS STS.

Nota: questo errore non viene registrato nella cronologia degli eventi di AWS CloudTrail perché non riesce sul lato client.

Risoluzione

1.    Verifica che l'URL .well_known e jwks_uri del provider di identità (IdP) siano accessibili pubblicamente. Ciò può essere verificato utilizzando il browser, il comando Windows o il comando Linux.

Scegli una delle seguenti operazioni:

Accedi ai seguenti collegamenti nel browser per verificare l'accesso:

https://<base_server_url>/.well-known/openid-configuration 

https://<base_server_url>/.well-known/jwks.json

-oppure-

Esegui i comandi seguenti:

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: verifica la presenza del codice di stato "200" nella risposta alla richiesta per confermare se i collegamenti sono accessibili.

2.    Se l'URL .well_known e jwks_uri dell'IdP non sono accessibili, controlla le impostazioni del firewall per confermare che i domini non siano inclusi in un elenco di indirizzi non consentiti.

A seconda della configurazione attuale del firewall, potrebbe essere necessario aggiungere i domini a un elenco di indirizzi consentiti.

Se le impostazioni del firewall non sono accessibili, utilizza il browser con un dispositivo di una rete diversa (ad esempio, un telefono). Verifica l'accesso dal browser seguendo le istruzioni del passaggio 1. Se la richiesta Web ha esito positivo, significa che questa viene bloccata dal firewall.

Se il server che effettua la chiamata API AssumeRoleWithWebIdentity è un'istanza Amazon Elastic Compute Cloud (Amazon EC2), assicurati che le impostazioni di configurazione siano corrette. Per istruzioni, consulta Why can't I connect to a website that is hosted on my EC2 instance?

3.    Controlla la latenza per l'operazione totale.

La latenza totale per l'operazione include:

  • Tempo di richiesta/risposta da STS
  • Tempo di richiesta/risposta dall'IdP

Riduzione al minimo della latenza AWS STS

Utilizza endpoint regionali invece di quelli globali per il servizio AWS STS. Ciò verifica che le richieste vengano instradate al server più vicino dal punto di vista geografico per ridurre al minimo la latenza. Per ulteriori informazioni, consulta Scrittura di codice per l'utilizzo di regioni AWS STS.

Nota: per gli SDK AWS, l'endpoint di destinazione delle richieste viene instradato dal parametro Regione AWS in cui viene effettuata la chiamata all'interno della configurazione sts_regional_endpoint.

Valutazione della latenza dell'IdP

L'IdP è responsabile dell'invio di richieste all'endpoint STS. I pacchetti in uscita dell'IdP devono essere analizzati all'interno dei registri dell'IdP per verificare se la richiesta all'endpoint STS richiede troppo tempo.

Nota: se la richiesta dall'IdP all'endpoint STS richiede più di 5 secondi, questa 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.

4.    (Facoltativo) Utilizza il backoff esponenziale.

Utilizza il backoff esponenziale per attese progressivamente più lunghe tra i tentativi per le risposte agli errori. L'API AssumeRoleWithWebIdentity dipende dal recupero di informazioni dal provider di identità (IdP). La maggior parte degli IdP ha limiti API per evitare errori di limitazione e le chiamate API potrebbero non recuperare i token richiesti dall'IdP. Implementa un intervallo di ritardo massimo e il numero massimo di tentativi. Per ulteriori informazioni, consulta Ripetizione dei tentativi in caso di errore e backoff esponenziale in AWS.


Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?