Solucionar problemas de federación de identidades de cargas de trabajo

En esta página se describen las soluciones a los errores habituales de federación de Workload Identity.

La API deGoogle Cloud no acepta la credencial emitida por SecurityTokenService

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

Si te encuentras con el siguiente error, puede 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 solucionar este error, cambia el token de acceso federado por un token de acceso sin restricciones llamando a GenerateAccessToken. Para obtener más información, consulta Obtener credenciales de duración reducida con la federación de identidades.

Incluir en una lista de permitidos un proveedor de identidades para usarlo con la federación de identidades de cargas de trabajo

Si intentas configurar un proveedor de identidades no permitido como proveedor de grupos de identidades de carga de trabajo, se producirá 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

Para solucionar este problema, siga las instrucciones que se indican en el artículo sobre cómo restringir la configuración del proveedor de identidades para añadir el proveedor de identidades a la lista de permitidos y usarlo con la federación de identidades de cargas de trabajo.

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

Si estás configurando un proveedor de OIDC y recibes el error Input JWK is not in a valid json format, puede deberse a que Google Cloudno admite los endpoints protegidos con certificados autofirmados. En concreto, los campos x5c y x5t no se admiten y deben eliminarse del JWK de OIDC.

Para solucionar los problemas con tu JWK, haz lo siguiente:

  1. Edita tu JWK y elimina 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 JWK restantes tengan el formato correcto, tal como se describe en la especificación de OIDC.

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

Error al conectar con el emisor de la credencial proporcionada

Si recibe el siguiente error, puede deberse a que Google Cloud no puede obtener el documento de metadatos OIDC o JWKS de su proveedor de identidades:

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

Este error suele producirse porque los endpoints no están configurados para que se pueda acceder a ellos desde Internet público. Para solucionar este error, compruebe que el endpoint de OIDC esté disponible públicamente y cumpla la especificación de OIDC. Para obtener más información, consulta Preparar el proveedor de identidades externo.

Si sigues recibiendo el error, comprueba que el emisor del token y la reclamación iss del token sean correctos.

La reclamación google.subject asignada supera el límite de 127 bytes

Si recibe el siguiente error, significa que las credenciales entrantes recibidas por la API SecurityTokenService generan una reclamación 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 solucionar este problema, utilice la función extract para quitar los caracteres innecesarios y extraer un identificador de asunto único de una reclamación más larga. Por ejemplo:

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

Error 429 Too Many Requests

Si recibes el error 429 Too Many Requests al solicitar un token de la API SecurityTokenService, significa que tu proyecto Google Cloud ha superado el límite de cuota de frecuencia de 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 solucionar este problema, identifique el sts.googleapis.com/requestsnombre de la métrica proporcionado en el mensaje de error, localice el nombre de la métrica correspondiente en la página de cuotas de gestión de identidades y accesos, confirme que el porcentaje de uso supera la cuota y solicite un aumento de la cuota.