Wie kann ich den API-Aufruffehler „InvalidIdentityToken“ von AWS STS AssumeRoleWithWebIdentity beheben?

Letzte Aktualisierung: 18.05.2022

Der API-Aufruf AssumeRoleWithWebIdentity von AWS Security Token Service (AWS STS) schlug mit einem Fehler ähnlich dem folgenden fehl:

„Beim Aufrufen des AssumeRoleWithWebIdentity-Vorgangs ist ein Fehler aufgetreten (InvalidIdentityToken). Der Bestätigungsschlüssel konnte nicht von Ihrem Identitätsanbieter abgerufen werden.“

Kurze Beschreibung

Dieser Fehler kann auftreten, wenn:

  • Die URL .well_known und jwks_uri des Identitätsanbieters (IdP) aus dem öffentlichen Internet nicht zugänglich sind.
  • Eine benutzerdefinierte Firewall die Anforderungen blockiert.
  • Bei API-Anforderungen vom IdP eine Latenz von mehr als 5 Sekunden zum Erreichen des AWS-STS-Endpunkts besteht.

Hinweis: Dieser Fehler wird nicht im AWS-CloudTrail-Ereignisverlauf protokolliert, da er auf der Clientseite fehlschlägt.

Auflösung

1.    Stellen Sie sicher, dass die URL .well_known und jwks_uri des Identitätsanbieters (IdP) öffentlich zugänglich sind. Dies kann mit Ihrem Browser, Windows-Befehl oder Linux-Befehl überprüft werden.

Führen Sie einen der folgenden Schritte aus:

Navigieren Sie in Ihrem Browser zu den folgenden Links, um den Zugriff zu überprüfen:

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

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

-oder-

Führen Sie die folgenden Befehle aus:

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

Hinweis: Überprüfen Sie in der Antwort auf die Anforderung auf den Statuscode „200", um sicherzustellen, dass auf die Links zugegriffen werden kann.

2.    Wenn auf die URL .well_known und jwks_uri des IdP nicht zugegriffen werden kann, überprüfen Sie die Firewall-Einstellungen, um sicherzustellen, dass die Domänen nicht auf einer Zugriffsverweigerungsliste stehen.

Abhängig von der aktuellen Konfiguration der Firewall müssen die Domänen möglicherweise zu einer Zulassungsliste hinzugefügt werden.

Wenn auf die Firewall-Einstellungen nicht zugegriffen werden kann, verwenden Sie den Browser mit einem Gerät aus einem anderen Netzwerk (z. B. einem Telefon). Überprüfen Sie den Zugriff über den Browser anhand der Anweisungen in Schritt 1. Wenn die Webanforderung erfolgreich ist, bedeutet dies, dass die Anforderung von der Firewall blockiert wird.

Wenn es sich bei dem Server, der den AssumeRoleWithWebIdentity-API-Aufruf ausführt, um eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance handelt, stellen Sie sicher, dass die Konfigurationseinstellungen korrekt sind. Anweisungen finden Sie unter Warum kann ich keine Verbindung zu einer Website herstellen, die auf meiner EC2-Instance gehostet wird?

3.    Überprüfen Sie die Latenz für den gesamten Vorgang.

Die gesamte Latenz für den Vorgang umfasst:

  • Anforderungs-/Antwortzeit von STS
  • Anforderungs-/Reaktionszeit von IdP

Minimierung der AWS-STS-Latenz

Verwenden Sie regionale Endpunkte anstelle globaler Endpunkte für den AWS-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 Schreiben von Code zur Verwendung von AWS-STS-Regionen.

Hinweis: Bei AWS-SDKs wird der Zielendpunkt der Anforderung über den Parameter AWS-Region weitergeleitet, in dem der Aufruf innerhalb der Konfiguration sts_regional_endpoint erfolgt.

Auswerten der IdP-Latenz

Der IdP ist dafür verantwortlich, Anforderungen an den STS-Endpunkt zu stellen. Die ausgehenden Pakete des IdP müssen in den IdP-Protokollen analysiert werden, um zu überprüfen, ob die Anforderung an den STS-Endpunkt zu lange dauert.

Hinweis: Wenn die Anforderung vom IdP an den STS-Endpunkt länger als 5 Sekunden dauert, kann es zu einem Timeout der Anforderung kommen und fehlschlagen. Sie können Ihren Identitätsanbieter kontaktieren, um eine Erhöhung der geografischen Verfügbarkeit zu beantragen, um die Latenz für diesen API-Aufruf zu verringern.

4.    (Optional) Verwenden Sie ein exponentielles Backoff.

Verwenden Sie ein exponentielles Backoff für zunehmend längere Wartezeiten zwischen Wiederholungen auf Fehlerantworten. Die AssumeRoleWithWebIdentity-API ist vom Abrufen von Informationen vom Identitätsanbieter (IdP) abhängig. Die meisten IdPs haben API-Limits, um Drosselungsfehler zu vermeiden, und API-Aufrufe erhalten möglicherweise nicht die erforderlichen Token vom IdP zurück. Implementieren Sie ein maximales Verzögerungsintervall und eine maximale Anzahl von Wiederholungen. Weitere Informationen finden Sie unter Wiederholungsversuche und exponentielles Backoff in AWS.


Hat dieser Artikel geholfen?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?