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 APIs do Google Cloud seja compatível com a federação de identidade, alguns métodos de API podem ter limitações. Para ver uma lista de limitações, consulte Federação de identidade: produtos e limitações.

Se você encontrar o seguinte erro, talvez esteja tentando usar um token de acesso federado com um serviço que não é compatível com eles.

{
  "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 sem restrições 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, talvez seja porque os endpoints protegidos com certificados autoassinados não são compatíveis com Google Cloud. Especificamente, os campos x5c e x5t não são compatíveis e precisam ser removidos do JWK OIDC.

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

  1. Edite seu 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 restantes do JWK estão formatados corretamente, conforme descrito na especificação OIDC.

  3. Configure o provedor OIDC com o JWK atualizado.

Erro ao se conectar ao emissor da credencial

Se você receber o seguinte erro, talvez seja porque Google Cloud não consegue buscar o documento de metadados OIDC ou JWKS do seu 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.

A declaração google.subject mapeada excede o limite de 127 bytes

Se você receber o seguinte erro, é porque as credenciais recebidas pela API SecurityTokenService geram uma declaração google.subject que excede o limite 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 esse problema, use a função extract para remover caracteres desnecessários e extrair um identificador de assunto exclusivo de uma declaração mais longa, por exemplo:

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

Erro 429: há muitas solicitações

Se você receber o erro 429 Too Many Requests ao solicitar um token da API SecurityTokenService, isso significa que o projeto Google Cloud excedeu o limite de cota de taxa para a API.

O erro inclui uma mensagem semelhante a esta:

{
  "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 esse problema, identifique o nome da métrica sts.googleapis.com/requests fornecido na mensagem de erro, localize o nome correspondente na página de cota do IAM, confirme se a porcentagem de uso excede a cota e solicite um aumento.