Come posso risolvere l'errore "InvalidIdentityToken" di una chiamata API AssumeRoleWithWebIdentity di AWS STS?
La chiamata API AssumeRoleWithWebIdentity del Servizio di token di sicurezza AWS (AWS STS) ha esito negativo con un errore "InvalidIdentityToken". Desidero risolvere l'errore.
Risoluzione
Quando una chiamata API AssumeRoleWithWebIdentity ha esito negativo, potresti ricevere un errore simile al seguente messaggio:
"An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation. Couldn't retrieve verification key from your identity provider."
Nota: la cronologia degli eventi di AWS CloudTrail non registra l'errore perché il problema si verifica sul lato client.
Verifica l'accesso pubblico per .well-known e jwks_uri
Se non riesci ad accedere all'URL .well-known e al jwks_uri del gestore dell'identità digitale, potresti ricevere un errore. Verifica di poter accedere pubblicamente all'URL .well-known e al jwks_uri del gestore dell'identità digitale.
Per verificare l'accessibilità, inserisci i seguenti link nel browser:
- https://BASE_SERVER_URL/.well-known/openid-configuration
- https://BASE_SERVER_URL/.well-known/jwks.json
-oppure-
Per verificare l'accessibilità, esegui uno di questi comandi.
Per Windows:
wget https://BASE_SERVER_URL/.well-known/openid-configurationwget https://BASE_SERVER_URL/.well-known/jwks.json
Per Linux:
curl https://BASE_SERVER_URL/.well-known/openid-configurationcurl https://BASE_SERVER_URL/.well-known/jwks.json
Nota: sostituisci BASE_SERVER_URL con l'URL di base del tuo gestore dell'identità digitale.
Per confermare se puoi accedere ai link, controlla il codice di stato HTTP 200 nella risposta alla richiesta.
Controlla le impostazioni del firewall
Se non riesci ad accedere all'URL .well-known e al jwks_uri del gestore dell'identità digitale, controlla le impostazioni del firewall. Assicurati che i domini non siano in un elenco di domini negati. A seconda della configurazione corrente del firewall, potrebbe essere necessario aggiungere i domini a un elenco di domini consentiti.
Se un firewall personalizzato blocca le richieste, potresti ricevere un errore.
Se non riesci ad accedere alle impostazioni del firewall, utilizza il browser con un dispositivo di una rete diversa, ad esempio un telefono.
Inserisci i seguenti link nel browser:
- https://BASE_SERVER_URL/.well-known/openid-configuration
- https://BASE_SERVER_URL/.well-known/jwks.json
Nota: sostituisci BASE_SERVER_URL con l'URL di base del tuo gestore dell'identità digitale.
Se il server che effettua la chiamata API AssumeRoleWithWebIdentity è un'istanza Amazon Elastic Compute Cloud (Amazon EC2), controlla le impostazioni di configurazione. Per ulteriori informazioni, consulta Perché non riesco a connettermi a un sito Web ospitato sulla mia istanza EC2?
Verifica la latenza delle operazioni
Quando la latenza impiega più di 5 secondi nelle richieste API dal gestore dell'identità digitale per raggiungere l'endpoint di AWS STS, potresti ricevere un errore.
Controlla la latenza dell'intera operazione, che include il tempo di richiesta e risposta da STS e il tempo di richiesta e risposta dagli attributi del gestore dell'identità digitale.
Riduci al minimo la latenza di 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
Il gestore dell'identità digitale effettua richieste all'endpoint di STS. Per verificare se la richiesta all'endpoint di STS richiede troppo tempo, analizza i pacchetti in uscita del gestore dell'identità digitale all'interno dei suoi log.
Nota: la richiesta potrebbe scadere e non riuscire se dovessero occorrere più di 5 secondi per passare dal gestore dell'identità digitale all'endpoint di STS. Puoi contattare il gestore dell'identità digitale per richiedere un aumento della disponibilità geografica per ridurre la latenza per la chiamata API.
(Facoltativo) Utilizza il backoff esponenziale e aumenta il numero di tentativi
Il gestore dell'identità digitale supporta AssumeRoleWithWebIdentity fornendo informazioni. La maggior parte dei gestori dell'identità digitale impone limiti alle API per evitare errori di limitazione (della larghezza di banda della rete) e il gestore potrebbe non restituire le chiavi richieste dalle chiamate API. Se l'API presenta problemi intermittenti per raggiungere il gestore, utilizza le seguenti opzioni di risoluzione dei problemi:
- Utilizza il backoff esponenziale.
- Aumenta il numero di tentativi e imposta un numero massimo. Inoltre, implementa un intervallo di ritardo massimo. Per ulteriori informazioni, consulta Comportamento di ripetizione.
Riduci le richieste di STS a .well-known e jwks_uri
Se l'insieme di chiavi web JSON (JWKS) imposta le intestazioni di risposta Pragma: no-cache o Cache-Control: no-cache, STS non lo memorizza nella cache. STS esegue un callback per le chiavi a cui viene fatto riferimento in un ID_TOKEN ma non nella cache. In questo caso, STS potrebbe fare troppe richieste all'URL .well-known e al jwks_uri.
Per ridurre i callback di STS, verifica che il JWKS non imposti nessuna di queste intestazioni di risposta. In questo modo, STS lo può memorizzare nella cache.
Riduci il numero di chiavi nel JWKS
STS supporta solo fino a 100 chiavi in un JWKS. Se il JWKS ha più di 100 chiavi, STS non può verificare i token firmati con le chiavi. Potresti ricevere l'errore "InvalidIdentityToken" quando chiami AssumeRoleWithWebIdentity e il JWKS ha più di 100 chiavi.
Per risolvere l'errore, rimuovi dal JWKS le chiavi che non sono più necessarie. Oppure riduci il numero di chiavi presenti nel JWKS.
Informazioni correlate
Welcome to the AWS Security Token Service API Reference (Benvenuto nella pagina di riferimento delle API del Servizio di token di sicurezza AWS)
- Argomenti
- Security, Identity, & Compliance
- Lingua
- Italiano
