Risolvere i problemi relativi alla federazione delle identità per i carichi di lavoro

Questa pagina descrive le soluzioni per gli errori comuni di federazione delle identità dei carichi di lavoro.

L'APIGoogle Cloud non accetta le credenziali emesse da SecurityTokenService

I token di accesso restituiti dall'API SecurityTokenService sono token di accesso federati. Sebbene la maggior parte delle API Google Cloud supporti la federazione delle identità, alcuni metodi API potrebbero presentare limitazioni. Per un elenco delle limitazioni, vedi Federazione delle identità: prodotti e limitazioni.

Se si verifica il seguente errore, potresti tentare di utilizzare un token di accesso federato con un servizio che non li supporta.

{
  "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",
  }
}

Per risolvere questo errore, scambia il token di accesso federato con un token di accesso senza restrizioni chiamando GenerateAccessToken. Per ulteriori informazioni, consulta Recupero delle credenziali di breve durata con la federazione delle identità.

Inserire un provider di identità nella lista consentita per l'utilizzo con la federazione delle identità per i carichi di lavoro

Se provi a configurare un provider di identità non consentito come provider del pool di identità del workload, viene visualizzato il seguente errore:

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

Per risolvere il problema, segui le istruzioni riportate in Limitare la configurazione del provider di identità per inserire il provider di identità nella lista consentita per l'utilizzo con la federazione delle identità per i carichi di lavoro.

L'input JWK non è in un formato JSON valido

Se stai configurando un provider OIDC e ricevi l'errore Input JWK is not in a valid json format, il problema potrebbe essere che gli endpoint protetti con certificati autofirmati non sono supportati da Google Cloud. Nello specifico, i campi x5c e x5t non sono supportati e devono essere rimossi da OIDC JWK.

Per risolvere i problemi relativi al JWK:

  1. Modifica il JWK e rimuovi i campi x5c (catena di certificati X.509) e x5t (impronta SHA-1 del certificato X.509).

    {
      "kty": "RSA",
      "use": "sig",
      "kid": "example-key-id",
      "alg": "RS256",
      "n": "base64url-modulus",
      "e": "AQAB"
    }
    
  2. Verifica che i campi JWK rimanenti siano formattati correttamente come descritto nella specifica OIDC.

  3. Configura il provider OIDC con la JWK aggiornata.

Errore durante la connessione all'emittente della credenziale specificata

Se ricevi il seguente errore, il motivo potrebbe essere che Google Cloud non è in grado di recuperare il documento di metadati OIDC o JWKS del tuo IdP:

{
  "error": "invalid_grant",
  "error_description":"Error connecting to the given credential's issuer."
 }

In genere questo errore si verifica perché gli endpoint non sono configurati per essere raggiungibili da internet pubblico. Per risolvere questo errore, verifica che l'endpoint OIDC sia disponibile pubblicamente e conforme alla specifica OIDC. Per maggiori informazioni, consulta Preparare il provider di identità esterno.

Se l'errore persiste, verifica che l'emittente del token, la rivendicazione iss nel token, sia corretta.

L'attestazione google.subject mappata supera il limite di 127 byte

Se ricevi il seguente errore, significa che le credenziali in entrata ricevute dall'API SecurityTokenService generano un'asserzione google.subject che supera il limite di caratteri:

{
  "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."
 }

Per risolvere il problema, utilizza la funzione extract per rimuovere i caratteri non necessari ed estrarre un identificatore del soggetto univoco da una rivendicazione più lunga, ad esempio:

google.subject=assertion.sub.extract('/users/{sub_claim}')

Errore 429 Too Many Requests

Se ricevi l'errore 429 Too Many Requests durante la richiesta di un token dall'API SecurityTokenService, significa che il tuo progetto Google Cloud ha superato il limite di quota di frequenza per l'API.

L'errore include un messaggio simile al seguente:

{
  "error": "quota_exceeded",
  "error_description":"The request was throttled due to rate limit: sts.googleapis.com/requests. Please retry after a few seconds."
 }

Per risolvere il problema, identifica il nome della metrica sts.googleapis.com/requests fornito nel messaggio di errore, individua il nome della metrica corrispondente nella pagina delle quote IAM, verifica che la percentuale di utilizzo superi la quota e poi richiedi un aumento della quota.