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 os aceita.
{
"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, isso pode acontecer 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 seu JWK, faça o seguinte:
Edite seu JWK e remova os campos
x5c(cadeia de certificados X.509) ex5t(impressão digital SHA-1 do certificado X.509).{ "kty": "RSA", "use": "sig", "kid": "example-key-id", "alg": "RS256", "n": "base64url-modulus", "e": "AQAB" }Verifique se os campos restantes do JWK estão formatados corretamente, conforme descrito na especificação OIDC.
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 o Google Cloud não consegue buscar o documento de metadados OIDC ou o 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 solicitação da AWS fornecida não contém todos os cabeçalhos necessários.
Se você receber o seguinte erro ao solicitar um token da
API SecurityTokenService,
é porque o campo headers no seu token GetCallerIdentity da AWS
não tem um cabeçalho obrigatório ou inclui cabeçalhos não compatíveis:
{
"error": "invalid_grant",
"error_description": "The given AWS request doesn't contain all the required headers."
}
O campo headers de um token GetCallerIdentity precisa incluir apenas os seguintes cabeçalhos de solicitação HTTP:
Authorization: a assinatura da solicitação.host: nome do host do campourl, por exemplo,sts.amazonaws.com.x-amz-date: o horário em que você enviará a solicitação, formatado como uma string ISO 8601 básica.x-goog-cloud-target-resource: o nome completo do recurso do provedor do pool de identidades da carga de trabalho.x-amz-security-token: o token de sessão. Necessário apenas se você estiver usando credenciais temporárias de segurança.
Esse erro também ocorre se o assinante da versão 4 da assinatura incluir outros
cabeçalhos, como x-amz-content-sha256, na solicitação assinada. Para resolver esse problema, verifique se a solicitação GetCallerIdentity tem um corpo vazio e se o campo headers e o campo SignedHeaders da solicitação assinada incluem apenas os cabeçalhos compatíveis. Para mais informações, consulte
Autenticar uma carga de trabalho usando a API REST.
A declaração google.subject mapeada excede o limite de 127 bytes
Se você receber o seguinte erro, isso significa que 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: número excessivo de solicitações
Se você receber o erro 429 Too Many Requests ao solicitar um token da API SecurityTokenService, isso significa que seu projeto Google Cloud excedeu o limite de cota de taxa da 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.