Résoudre les problèmes liés à la fédération d'identité de charge de travail

Cette page décrit les solutions aux erreurs courantes de la fédération d'identités de charge de travail.

L'APIGoogle Cloud n'accepte pas les identifiants émis par SecurityTokenService

Les jetons d'accès renvoyés par l'API SecurityTokenService sont des jetons d'accès fédérés. Bien que la plupart des API Google Cloud soient compatibles avec la fédération d'identité, certaines méthodes d'API peuvent présenter des limites. Pour obtenir la liste des limites, consultez Fédération des identités : produits et limites.

Si vous rencontrez l'erreur suivante, il est possible que vous tentiez d'utiliser un jeton d'accès fédéré avec un service qui ne les accepte pas.

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

Pour résoudre cette erreur, échangez le jeton d'accès fédéré contre un jeton d'accès non restreint en appelant GenerateAccessToken. Pour en savoir plus, consultez Obtenir des identifiants éphémères avec la fédération d'identité.

Ajouter un fournisseur d'identité à la liste d'autorisation pour l'utiliser avec la fédération d'identité de charge de travail

Si vous tentez de configurer un fournisseur d'identité non autorisé en tant que fournisseur de pool d'identités de charge de travail, vous rencontrez l'erreur suivante :

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

Pour résoudre ce problème, suivez les instructions de la section Restreindre la configuration du fournisseur d'identité afin d'ajouter le fournisseur d'identité à la liste d'autorisation pour l'utiliser avec la fédération d'identité de charge de travail.

Le JWK d'entrée n'est pas au format JSON valide

Si vous configurez un fournisseur OIDC et que vous recevez l'erreur Input JWK is not in a valid json format, cela peut être dû au fait que les points de terminaison sécurisés avec des certificats autosignés ne sont pas compatibles avec Google Cloud. Plus précisément, les champs x5c et x5t ne sont pas compatibles et doivent être supprimés du JWK OIDC.

Pour résoudre les problèmes liés à votre JWK, procédez comme suit :

  1. Modifiez votre JWK et supprimez les champs x5c (chaîne de certificats X.509) et x5t (empreinte numérique SHA-1 du certificat X.509).

    {
      "kty": "RSA",
      "use": "sig",
      "kid": "example-key-id",
      "alg": "RS256",
      "n": "base64url-modulus",
      "e": "AQAB"
    }
    
  2. Vérifiez que les champs JWK restants sont correctement formatés, comme décrit dans la spécification OIDC.

  3. Configurez le fournisseur OIDC avec le JWK mis à jour.

Erreur lors de la connexion à l'émetteur de l'identifiant donné

Si vous rencontrez l'erreur suivante, cela peut être dû au fait que Google Cloud ne parvient pas à récupérer le document de métadonnées OIDC de votre fournisseur d'identité ou JWKS :

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

La cause de cette erreur est généralement le fait que les points de terminaison ne sont pas configurés pour être accessibles depuis l'Internet public. Pour la résoudre, vérifiez que le point de terminaison OIDC est accessible au public et conforme à la spécification OIDC. Pour en savoir plus, consultez la page Préparer le fournisseur d'identité externe.

Si vous continuez à recevoir cette erreur, vérifiez que l'émetteur du jeton, c'est-à-dire la revendication iss dans le jeton, est correct.

La revendication google.subject mappée dépasse la limite de 127 octets.

Si vous recevez l'erreur suivante, cela signifie que les identifiants entrants reçus par l'API SecurityTokenService génèrent une revendication google.subject qui dépasse la limite de caractères :

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

Pour résoudre ce problème, utilisez la fonction extract pour supprimer les caractères inutiles et extraire un identifiant de sujet unique d'une revendication plus longue, par exemple :

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

Erreur 429 : Trop de requêtes

Si vous recevez l'erreur 429 Too Many Requests lorsque vous demandez un jeton à l'API SecurityTokenService, cela signifie que votre projet Google Cloud a dépassé sa limite de quota de débit pour l'API.

L'erreur inclut un message semblable à celui-ci :

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

Pour résoudre ce problème, identifiez le nom de la métrique sts.googleapis.com/requests fourni dans le message d'erreur, recherchez le nom de la métrique correspondante sur la page des quotas IAM, vérifiez que le pourcentage d'utilisation dépasse le quota, puis demandez une augmentation du quota.