Resolver problemas com a federação de identidade da carga de trabalho

Nesta página, descrevemos as resoluções de erros comuns com a federação de identidade da carga de trabalho.

A APIGoogle Cloud não aceita a credencial emitida por SecurityTokenService

Os tokens de acesso retornados pela API SecurityTokenService são tokens de acesso federados. Embora a maioria das Google Cloud APIs ofereça suporte à federação de identidade, alguns métodos de API podem ter limitações. Para conferir uma lista de limitações, consulte Federação de identidade: produtos e limitações.

Se você encontrar o erro abaixo, talvez esteja tentando usar um token de acesso federado com um serviço que não oferece suporte a ele.

{
  "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 esse erro, troque o token de acesso federado por um token de acesso irrestrito chamando GenerateAccessToken. Para mais informações, consulte Como receber credenciais de curta duração com federação de identidade.

Adicionar um provedor de identidade à lista de permissões para uso com a federação de identidade da carga de trabalho

Se você tentar configurar um provedor de identidades não permitido como um provedor de pool de identidades de carga de trabalho, encontrará o seguinte erro:

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 resolver esse problema, siga as instruções em Restringir a configuração do provedor de identidade para colocar o provedor de identidade na lista de permissões para uso com a federação de identidade da carga de trabalho.

A JWK de entrada não está em um formato JSON válido

Se você estiver configurando um provedor OIDC e receber o erro Input JWK is not in a valid json format, isso pode ser porque os endpoints protegidos com certificados autoassinados não têm suporte para Google Cloud. Especificamente, os campos x5c e x5t não são aceitos e precisam ser removidos do JWK OIDC.

Para resolver problemas com a JWK, faça o seguinte:

  1. Edite o JWK e remova os campos x5c (cadeia de certificados X.509) e x5t (impressão digital SHA-1 do certificado X.509).

    {
      "kty": "RSA",
      "use": "sig",
      "kid": "example-key-id",
      "alg": "RS256",
      "n": "base64url-modulus",
      "e": "AQAB"
    }
    
  2. Verifique se os campos JWK restantes estão formatados corretamente, conforme descrito na especificação OIDC.

  3. Configure o provedor OIDC com a JWK atualizada.

Erro ao se conectar ao emissor da credencial

Se você receber o erro abaixo, talvez seja porque o Google Cloud não consegue buscar o documento de metadados OIDC ou JWKS do IdP:

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

Esse erro geralmente ocorre porque os endpoints não estão configurados para serem acessíveis pela Internet pública. Para resolver esse erro, verifique se o endpoint do OIDC está disponível publicamente e em conformidade com a especificação do OIDC. Para mais informações, consulte Como preparar o provedor de identidade externo.

Se você ainda receber o erro, verifique se o emissor do token e a declaração iss estão corretos.