Direkt zum Inhalt

Wie behebe ich den AWS STS AssumeRoleWithWebIdentity API-Aufruffehler „InvalidIdentityToken“?

Lesedauer: 4 Minute
0

Der API-Aufruf AssumeRoleWithWebIdentity (AWS STS) des AWS Security Token Service (AWS STS) schlägt mit dem Fehler „InvalidIdentityToken“ fehl. Ich möchte diesen Fehler beheben.

Lösung

Wenn dein AssumeRoleWithWebIdentity-API-Aufruf fehlschlägt, erhältst du möglicherweise eine Fehlermeldung, die der folgenden Meldung ähnelt:

„An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation. Couldn't retrieve verification key from your identity provider.“

Hinweis: Der AWS CloudTrail-Ereignisverlauf protokolliert diesen Fehler nicht, da dieses Problem auf der Clientseite auftritt.

Überprüfe den öffentlichen Zugriff für .well-known und jwks_uri

Wenn du nicht auf die URL .well-known und jwks_uri des Identitätsanbieters (IdP) zugreifen kannst, erhältst du möglicherweise eine Fehlermeldung. Stelle sicher, dass du öffentlich auf die URL .well-known und jwks_uri des IdP zugreifen kannst.

Um die Zugänglichkeit zu überprüfen, navigiere in deinem Browser zu den folgenden Links:

  • https://BASE_SERVER_URL/.well-known/openid-configuration
  • https://BASE_SERVER_URL/.well-known/jwks.json

-oder-

Führe einen der folgenden Befehle aus, um die Zugänglichkeit zu überprüfen.

Für Windows:

wget https://BASE_SERVER_URL/.well-known/openid-configurationwget https://BASE_SERVER_URL/.well-known/jwks.json

Für Linux:

curl https://BASE_SERVER_URL/.well-known/openid-configurationcurl https://BASE_SERVER_URL/.well-known/jwks.json

Hinweis: Ersetze BASE_SERVER_URL durch die Basis-URL deines IdP.

Um zu überprüfen, ob du auf die Links zugreifen kannst, suche in der Antwort auf die Anfrage nach dem Statuscode HTTP 200.

Überprüfe die Firewall-Einstellungen

Wenn du nicht auf die URL .well-known und jwks_uri des IdP zugreifen kannst, überprüfe die Firewall-Einstellungen. Stelle sicher, dass die Domains nicht auf einer Ablehnungsliste stehen. Abhängig von der aktuellen Konfiguration der Firewall müssen die Domains möglicherweise zu einer Zulassungsliste hinzugefügt werden.

Wenn eine benutzerdefinierte Firewall die Anfragen blockiert, erhältst du möglicherweise eine Fehlermeldung.

Wenn du nicht auf die Firewall-Einstellungen zugreifen kannst, verwende den Browser mit einem Gerät aus einem anderen Netzwerk, z. B. einem Telefon.

Navigiere in deinem Browser zu den folgenden Links:

  • https://BASE_SERVER_URL/.well-known/openid-configuration
  • https://BASE_SERVER_URL/.well-known/jwks.json

Hinweis: Ersetze BASE_SERVER_URL durch die Basis-URL deines IdP.

Wenn der Server, der den AssumeRoleWithWebIdentity-API-Aufruf ausführt, eine Amazon-Elastic-Compute-Cloud (Amazon EC2)-Instance ist, überprüfe die Konfigurationseinstellungen. Weitere Informationen findest du unter Warum kann ich keine Verbindung zu einer Website herstellen, die auf meiner EC2-Instance gehostet wird?

Überprüfe die Betriebslatenz

Wenn die Latenz bei API-Anfragen vom IdP länger als 5 Sekunden dauert, um den AWS-STS-Endpunkt zu erreichen, erhältst du möglicherweise eine Fehlermeldung.

Überprüfe die Latenz für den gesamten Vorgang. Dazu gehören die Anfrage- und Antwortzeit von STS sowie die Anfrage- und Antwortzeit von IdP-Attributen.

Minimiere die STS-Latenz

Verwenden Sie regionale AWS-Endpunkte anstelle von globalen Endpunkten für den STS-Service. Dadurch wird überprüft, ob die Anforderungen an den geografisch nächstgelegenen Server weitergeleitet werden, um die Latenz zu minimieren. Weitere Informationen finden Sie unter Code zur Verwendung von AWS STS-Regionen schreiben.

**Hinweis:**Bei AWS-SDKs leitet der Region-Parameter den Zielendpunkt der Anfrage dorthin weiter, wo der Aufruf innerhalb der Konfiguration sts_regional_endpoint getätigt wird.

Bewerten Sie die IDP-Latenz

Der IDP stellt Anfragen an den STS-Endpunkt. Um zu überprüfen, ob die Anfrage an den STS-Endpunkt zu lange dauert, überprüfe die ausgehenden Pakete des IdP in den IdP-Protokollen.

Hinweis: Die Anfrage läuft möglicherweise ab und schlägt fehl, wenn der Übergang vom IdP zum STS-Endpunkt länger als 5 Sekunden dauert. Du kannst dich an deinen Identitätsanbieter wenden, um eine Erhöhung der geografischen Verfügbarkeit zu beantragen, um die Latenz für diesen API-Aufruf zu reduzieren.

(Optional) Verwende exponentielles Backoff und erhöhe die Anzahl der Wiederholungsversuche

Der IdP unterstützt die AssumeRoleWithWebIdentity durch die Bereitstellung von Informationen. Die meisten IdPs haben API-Limits, um Drosselungsfehler zu vermeiden, und der IdP gibt möglicherweise nicht die erforderlichen Schlüssel von API-Aufrufen zurück. Wenn die API zeitweise Probleme hat, deinen IdP zu erreichen, verwende die folgenden Optionen zur Fehlerbehebung:

  • Verwende exponentielles Backoff.
  • Erhöhe deine Wiederholungsversuche und lege eine maximale Anzahl von Wiederholungen fest. Implementiere außerdem ein maximales Verzögerungsintervall. Weitere Informationen findest du unter Retry behavior (Verhalten bei Wiederholungen).

Reduziere STS-Anfragen an .well_known und jwks_uri

Wenn dein JSON Web Key Set (JWKS) entweder Pragma: no-cache oder Cache-Control: no-cache-Antwort-Header festlegt, dann speichert STS deine JWKS nicht. STS führt einen Callback für Schlüssel durch, auf die in einer ID_TOKEN verwiesen wird, aber nicht im Cache. In diesem Fall stellt STS möglicherweise zu viele Anfragen an deine URL .well-known und jwks_uri.

Um Callbacks von STS zu reduzieren, stelle sicher, dass dein JWKS keinen dieser Antwort-Header setzt. Dadurch kann STS deine JWKS zwischenspeichern.

Reduziere die Anzahl der Schlüssel in deinem JWKS

STS unterstützt nur bis zu 100 Schlüssel in einem JWKS. Wenn dein JWKS mehr als 100 Schlüssel hat, kann STS die mit deinen Schlüsseln signierten Token nicht verifizieren. Möglicherweise erhältst du den Fehler „InvalidIdentityToken“, wenn du AssumeRoleWithWebIdentity aufrufst und dein JWKS mehr als 100 Schlüssel hat.

Um den Fehler zu beheben, entferne Schlüssel aus deinem JWKS, die nicht länger benötigt werden. Oder reduziere die Anzahl der in deinem JWKS vorhandenen Schlüssel.

Ähnliche Informationen

Willkommen bei der API-Referenz für den AWS Security Token Service

Wie behebe ich API-Drosselungs- oder „Rate exceeded“-Fehler bei IAM und AWS STS?