Como posso resolver o erro de chamada da API AWS STS AssumeRoleWithWebIdentity "InvalidIdentityToken"?

5 minuto de leitura
0

A chamada de API do AWS Security Token Service (AWS STS) AssumeRoleWithWebIdentity falhou com um erro "InvalidIdentityToken".

Breve descrição

Se a chamada da API AssumeRoleWithWebIdentity falhar, você poderá receber um erro semelhante à mensagem a seguir:

"Ocorreu um erro (InvalidIdentityToken) ao chamar a operação AssumeRoleWithWebIdentity. Não foi possível recuperar a chave de verificação do seu provedor de identidades."

Esse erro pode ocorrer nos seguintes cenários:

  • O URL .well\known e o jwks_uri do provedor de identidades (IdP) estão inacessíveis na Internet pública.
  • Um firewall personalizado está bloqueando as solicitações.
  • Há uma latência de mais de 5 segundos nas solicitações de API do IdP para alcançar o endpoint do AWS STS.
  • O STS está fazendo muitas solicitações para seu URL .well_known ou para o jwks_uri do IdP.

Observação: Como esse problema falha no lado do cliente, o histórico de eventos do AWS CloudTrail não registra esse erro.

Resolução

Verifique o acesso público para .well_known e jwks_uri

Verifique se o URL .well_known e o jwks_uri do IdP estão acessíveis ao público. Isso pode ser verificado usando seu navegador, comando do Windows ou comando do Linux. Para fazer isso, conclua uma das seguintes ações:

Para verificar o acesso, navegue até os seguintes links em seu navegador:

  • https://BASE_SERVER_URL/.well-known/openid-configuration
  • https://BASE_SERVER_URL/.well-known/jwks.json

-ou-

Execute os seguintes comandos:

Windows:

wget https://BASE_SERVER_URL/.well-known/openid-configuration
wget https://BASE_SERVER_URL/.well-known/jwks.json

Linux:

curl https://BASE_SERVER_URL/.well-known/openid-configuration
curl https://BASE_SERVER_URL/.well-known/jwks.json

Observação: Para confirmar se você pode acessar os links, verifique o código de status 200 na resposta da solicitação.

Verifique as configurações do firewall

Se o URL .well_known e o jwks_uri do IdP não estiverem acessíveis, verifique as configurações do firewall. Verifique se os domínios não estão em uma lista de negação.

Dependendo da configuração atual do firewall, talvez os domínios precisem ser adicionados a uma lista de permissões.

Se as configurações do firewall não estiverem acessíveis, use o navegador com um dispositivo de uma rede diferente, como um telefone. Para verificar o acesso pelo navegador, use as instruções na etapa 1. Se a solicitação da web for bem-sucedida, o firewall estará bloqueando a solicitação.

Se o servidor que está fazendo a chamada da API AssumeRoleWithWebIdentity for uma instância do Amazon Elastic Compute Cloud (Amazon EC2), verifique as configurações. Para obter instruções, consulte Por que não consigo me conectar a um site hospedado na minha instância do EC2?

Verifique a latência da operação

Verifique a latência da operação total. Isso inclui os seguintes atributos:

  • Tempo de solicitação/resposta do STS
  • Tempo de solicitação/resposta do IdP

Minimize a latência do STS

Use endpoints regionais da AWS em vez de endpoints globais para o serviço STS. Isso verifica se as solicitações são roteadas para o servidor geograficamente mais próximo para minimizar a latência. Para obter mais informações, consulte Como escrever código para usar as regiões do AWS STS.

Observação: Para SDKs da AWS, o parâmetro Region roteia o endpoint de destino da solicitação para onde a chamada é feita na configuração sts_regional_endpoint.

Avalie a latência do IdP

O IdP faz solicitações ao endpoint STS. Para verificar se a solicitação ao endpoint STS demora muito, analise os pacotes de saída do IdP nos registros do IdP.

Observação: Se a solicitação do IdP para o endpoint STS levar mais de 5 segundos, a solicitação poderá atingir o tempo limite e falhar. Você pode entrar em contato com seu provedor de identidades para solicitar um aumento na disponibilidade geográfica para reduzir a latência dessa chamada de API.

(Opcional) Use o recuo exponencial e aumente as novas tentativas

A API AssumeRoleWithWebIdentity depende da recuperação de informações do provedor de identidades (IdP). Para evitar erros de limitação, a maioria dos IdPs tem limites de API, e as chamadas de API podem não recuperar as chaves necessárias do IdP. Para ajudar a assumir uma função com sucesso se a API tiver problemas intermitentes ao acessar seu IdP, siga as seguintes etapas:

Reduza as solicitações de STS para .well_known e jwks_uri

Se seu JSON Web Key Set (JWKS) definir cabeçalhos de resposta Pragma: no-cache ou Cache-Control: no-cache, o STS não armazenará seu JWKS em cache. Para chaves que são referenciadas em um ID_TOKEN, mas não estão no cache, o STS executa um retorno de chamada. Nesse caso, o STS pode fazer muitas solicitações para seu URL .well_known e jwks_uri.

Portanto, para reduzir os retornos de chamada do STS, verifique se o JWKS não define nenhum desses cabeçalhos de resposta. Isso permite que o STS armazene seu JWKS em cache.

Informações relacionadas

Bem-vindo à referência da API do AWS Security Token Service

Como posso resolver erros de limitação de API ou de “Taxa excedida” para IAM e AWS STS?

AWS OFICIAL
AWS OFICIALAtualizada há um ano