Soluciona problemas de la federación de identidades para cargas de trabajo

En esta página, se describen las resoluciones para errores comunes de la federación de identidades para cargas de trabajo.

La API deGoogle Cloud no acepta la credencial emitida por SecurityTokenService

Los tokens de acceso que devuelve la API de SecurityTokenService son tokens de acceso federados. Aunque la mayoría de las Google Cloud APIs admiten la federación de identidades, es posible que ciertos métodos de la API tengan limitaciones. Para obtener una lista de las limitaciones, consulta Federación de identidades: Productos y limitaciones.

Si encuentras el siguiente error, es posible que estés intentando usar un token de acceso federado con un servicio que no los admite.

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

Para resolver este error, llama a GenerateAccessToken para intercambiar el token de acceso federado por un token de acceso sin restricciones. Para obtener más información, consulta Obtén credenciales de corta duración con federación de identidades.

Agrega un proveedor de identidad a la lista de entidades permitidas para usarlo con la federación de identidades para cargas de trabajo

Si intentas configurar un proveedor de identidad no permitido como un proveedor de grupo de Workload Identity, verás el siguiente error:

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

A fin de resolver este problema, sigue las instrucciones en Restringe la configuración del proveedor de identidad para incluir en la lista de entidades permitidos el proveedor de identidad que se usará con la federación de identidades para cargas de trabajo.

El JWK de entrada no tiene un formato JSON válido.

Si configuras un proveedor de OIDC y recibes el error Input JWK is not in a valid json format, es posible que sea porque Google Cloudno admite extremos protegidos con certificados autofirmados. Específicamente, los campos x5c y x5t no son compatibles y deben quitarse del JWK de OIDC.

Para resolver problemas con tu JWK, haz lo siguiente:

  1. Edita tu JWK y quita los campos x5c (cadena de certificados X.509) y x5t (huella digital SHA-1 del certificado X.509).

    {
      "kty": "RSA",
      "use": "sig",
      "kid": "example-key-id",
      "alg": "RS256",
      "n": "base64url-modulus",
      "e": "AQAB"
    }
    
  2. Verifica que los campos restantes de JWK tengan el formato correcto, como se describe en la especificación de OIDC.

  3. Configura el proveedor de OIDC con el JWK actualizado.

Error en la conexión con la entidad emisora de la credencial

Si recibes el siguiente error, podría deberse a que Google Cloud no puede recuperar el documento de metadatos de OIDC de tu IdP o el JWKS:

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

Por lo general, este error ocurre porque los extremos no están configurados para ser accesibles desde la Internet pública. Para resolver este error, verifica que el extremo de OIDC esté disponible de forma pública y que cumpla con la especificación de OIDC. Para obtener más información, consulta Prepara el proveedor de identidad externo.

Si sigues recibiendo el error, verifica que la entidad emisora del token, la reclamación iss en el token, sea correcta.

El reclamo google.subject asignado supera el límite de 127 bytes

Si recibes el siguiente error, es porque las credenciales entrantes que recibe la API de SecurityTokenService generan un reclamo de google.subject que supera el límite de caracteres:

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

Para resolver este problema, usa la función extract para quitar los caracteres innecesarios y extraer un identificador de asunto único de un reclamo más largo, por ejemplo:

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

Error 429, demasiadas solicitudes

Si recibes el error 429 Too Many Requests cuando solicitas un token de la API de SecurityTokenService, significa que tu proyecto Google Cloud superó el límite de cuota de frecuencia para la API.

El error incluye un mensaje similar al siguiente:

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

Para resolver este problema, identifica el nombre de la métrica sts.googleapis.com/requests que se proporciona en el mensaje de error, localiza el nombre de la métrica correspondiente en la página Cuota de IAM, confirma que el porcentaje de uso supera la cuota y, luego, solicita un aumento de cuota.