Auf dieser Seite werden Lösungen für häufige Fehler der Workload Identity-Föderation beschrieben.
DieGoogle Cloud API akzeptiert keine von SecurityTokenService ausgestellten Anmeldedaten
Von der SecurityTokenService API zurückgegebene Zugriffstokens sind föderierte Zugriffstokens.
Die meisten Google Cloud APIs unterstützen zwar die Identitätsföderation, aber bestimmte API-Methoden können Einschränkungen haben. Eine Liste der Einschränkungen finden Sie unter Identitätsföderation: Produkte und Einschränkungen.
Wenn der folgende Fehler auftritt, versuchen Sie möglicherweise, ein Zugriffstoken für den föderierten Zugriff mit einem Dienst zu verwenden, der diese nicht unterstützt.
{
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED",
}
}
Um diesen Fehler zu beheben, tauschen Sie das föderierte Zugriffstoken gegen ein uneingeschränktes Zugriffstoken ein, indem Sie GenerateAccessToken aufrufen.
Weitere Informationen finden Sie unter Kurzlebige Anmeldedaten mit Identitätsföderation abrufen.
Identitätsanbieter zur Verwendung mit der Workload Identity-Föderation zulassen
Wenn Sie versuchen, einen nicht zulässigen Identitätsanbieter als Workload Identity-Poolanbieter zu konfigurieren, tritt der folgende Fehler auf:
FAILED_PRECONDITION: Precondition check failed.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
violations:
- description: "Org Policy violated for value: '{PROVIDER}'."
subject: orgpolicy:projects/{PROJECT}/locations/global/workloadIdentityPools/{POOL}
type: constraints/iam.workloadIdentityPoolProviders
Folgen Sie der Anleitung unter Konfiguration des Identitätsanbieters einschränken, um dieses Problem zu beheben und den Identitätsanbieter für die Verwendung mit der Workload Identity-Föderation zuzulassen.
Das eingegebene JWK hat kein gültiges JSON-Format
Wenn Sie einen OIDC-Anbieter konfigurieren und der Fehler Input JWK is
not in a valid json format angezeigt wird, kann das daran liegen, dass Endpunkte, die mit selbstsignierten Zertifikaten gesichert sind, von Google Cloudnicht unterstützt werden. Insbesondere werden die Felder x5c und x5t nicht unterstützt und müssen aus dem OIDC-JWK entfernt werden.
So beheben Sie Probleme mit Ihrem JWK:
Bearbeiten Sie Ihren JWK und entfernen Sie die Felder
x5c(X.509-Zertifikatskette) undx5t(SHA-1-Fingerabdruck des X.509-Zertifikats).{ "kty": "RSA", "use": "sig", "kid": "example-key-id", "alg": "RS256", "n": "base64url-modulus", "e": "AQAB" }Prüfen Sie, ob die verbleibenden JWK-Felder gemäß der OIDC-Spezifikation richtig formatiert sind.
Konfigurieren Sie den OIDC-Anbieter mit dem aktualisierten JWK.
Fehler beim Herstellen einer Verbindung zum Aussteller der angegebenen Anmeldedaten
Wenn Sie den folgenden Fehler erhalten, kann es sein, dass Google Cloud das OIDC-Metadatendokument oder den JWKS Ihres Identitätsanbieters nicht abrufen kann:
{
"error": "invalid_grant",
"error_description":"Error connecting to the given credential's issuer."
}
Dieser Fehler tritt normalerweise auf, weil die Endpunkte nicht so konfiguriert sind, dass sie über das öffentliche Internet erreichbar sind. Prüfen Sie, ob der OIDC-Endpunkt öffentlich verfügbar ist und der OIDC-Spezifikation entspricht, um diesen Fehler zu beheben. Weitere Informationen finden Sie unter Externen Identitätsanbieter vorbereiten.
Wenn der Fehler weiterhin auftritt, prüfen Sie, ob der Tokenaussteller, der iss-Anspruch im Token, korrekt ist.
Die angegebene AWS-Anfrage enthält nicht alle erforderlichen Header.
Wenn Sie beim Anfordern eines Tokens über die SecurityTokenService API den folgenden Fehler erhalten, liegt das daran, dass im Feld headers Ihres AWS-GetCallerIdentity-Tokens ein erforderlicher Header fehlt oder nicht unterstützte Header enthalten sind:
{
"error": "invalid_grant",
"error_description": "The given AWS request doesn't contain all the required headers."
}
Das Feld headers eines GetCallerIdentity-Tokens darf nur die folgenden HTTP-Anfrageheader enthalten:
Authorization: Die Anfragesignatur.host: Der Hostname des Feldsurl, z. B.sts.amazonaws.com.x-amz-date: Den Zeitpunkt, an dem Sie die Anfrage senden möchten, angegeben im Stringformat ISO 8601 Basic.x-goog-cloud-target-resource: der vollständige Ressourcenname des Anbieters des Workload Identity-Pools.x-amz-security-token: Das Sitzungstoken. Nur erforderlich, wenn Sie temporäre Sicherheitsanmeldedaten verwenden.
Dieser Fehler tritt auch auf, wenn Ihr Signer für Version 4 zusätzliche Header wie x-amz-content-sha256 in die signierte Anfrage einfügt. Um dieses Problem zu beheben, muss Ihre GetCallerIdentity-Anfrage einen leeren Textkörper haben und sowohl das Feld headers als auch das Feld SignedHeaders der signierten Anfrage dürfen nur die unterstützten Header enthalten. Weitere Informationen finden Sie unter Arbeitslast mit der REST API authentifizieren.
Die zugeordnete „google.subject“-Anforderung überschreitet das Limit von 127 Byte
Wenn Sie den folgenden Fehler erhalten, liegt das daran, dass die eingehenden Anmeldedaten, die von der SecurityTokenService API empfangen werden, einen google.subject-Anspruch generieren, der das Zeichenlimit überschreitet:
{
"error": "invalid_request",
"error_description":"The size of mapped attribute google.subject exceeds the 127 bytes limit. Either modify your attribute mapping or the incoming assertion to produce a mapped attribute that is less than 127 bytes."
}
Verwenden Sie zur Behebung dieses Problems die Funktion extract, um unnötige Zeichen zu entfernen und eine eindeutige Thema-ID aus einem längeren Anspruch zu extrahieren, z. B.:
google.subject=assertion.sub.extract('/users/{sub_claim}')
Fehler 429: Zu viele Anfragen
Wenn Sie beim Anfordern eines Tokens über die SecurityTokenService API den Fehler 429 Too Many Requests erhalten, bedeutet das, dass Ihr Google Cloud Projekt das Ratenkontingentlimit für die API überschritten hat.
Die Fehlermeldung sieht etwa so aus:
{
"error": "quota_exceeded",
"error_description":"The request was throttled due to rate limit: sts.googleapis.com/requests. Please retry after a few seconds."
}
Um dieses Problem zu beheben, ermitteln Sie den in der Fehlermeldung angegebenen Messwertnamen sts.googleapis.com/requests, suchen Sie den entsprechenden Messwertnamen auf der Seite IAM-Kontingent, prüfen Sie, ob der Prozentsatz der Nutzung das Kontingent überschreitet, und beantragen Sie dann eine Kontingenterhöhung.