Risolvere i problemi relativi alla federazione delle identità per i workload

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

L'APICloud de Confiance 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 Cloud de Confiance supporti la federazione delle identità, alcuni metodi API potrebbero presentare limitazioni. Per un elenco delle limitazioni, consulta Federazione delle identità: prodotti e limitazioni.

Se riscontri 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 limitazioni chiamando GenerateAccessToken. Per saperne di più, consulta Ottenere credenziali di breve durata con la federazione dell'identità.

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

Se tenti di 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 workload.

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 motivo potrebbe essere che gli endpoint protetti con certificati autofirmati non sono supportati da Cloud de Confiance. Nello specifico, i campi x5c e x5t non sono supportati e devono essere rimossi dal JWK OIDC.

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 il JWK aggiornato.

Errore durante la connessione all'emittente delle credenziali fornite

Se ricevi il seguente errore, il motivo potrebbe essere che Cloud de Confiance by S3NS 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 Preparazione del provider di identità esterno.

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

La richiesta AWS specificata non contiene tutte le intestazioni obbligatorie

Se ricevi il seguente errore durante la richiesta di un token dall'API SecurityTokenService, è perché nel campo headers del token AWS GetCallerIdentity manca un'intestazione obbligatoria o sono presenti intestazioni non supportate:

{
  "error": "invalid_grant",
  "error_description": "The given AWS request doesn't contain all the required headers."
}

Il campo headers di un token GetCallerIdentity deve includere solo le seguenti intestazioni delle richieste HTTP:

  • Authorization: la firma della richiesta.
  • host: il nome host del campo url, ad esempio sts.amazonaws.com.
  • x-amz-date: l'ora in cui invii la richiesta, formattata come stringa ISO 8601 Basic.
  • x-goog-cloud-target-resource: il nome completo della risorsa del provider del pool di identità del workload.
  • x-amz-security-token: il token di sessione. Obbligatorio solo se utilizzi credenziali di sicurezza temporanee.

Questo errore si verifica anche se il firmatario della versione 4 della firma include intestazioni aggiuntive, ad esempio x-amz-content-sha256, nella richiesta firmata. Per risolvere questo problema, assicurati che la richiesta GetCallerIdentity abbia un corpo vuoto e che sia il campo headers sia il campo SignedHeaders della richiesta firmata includano solo le intestazioni supportate. Per saperne di più, consulta Autentica un workload utilizzando l'API REST.

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

Se ricevi il seguente errore, è perché 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 univoco del soggetto da una rivendicazione più lunga, ad esempio:

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

Errore 429 Troppe richieste

Se ricevi l'errore 429 Too Many Requests durante la richiesta di un token dall'API SecurityTokenService, significa che il tuo progetto Cloud de Confiance 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.