Ir para o conteúdo

Como resolvo erros de federação de IdP do OIDC no IAM?

10 minuto de leitura
0

Quero solucionar os erros que encontro quando uso um provedor de identidades (IdP) do OpenID Connect (OIDC) no AWS Identity and Access Management (IAM).

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Importante: adicione /.well-known/openid-configuration ao final do URL do seu provedor de identidades do OIDC para visualizar o documento de configuração e os metadados do provedor.

“Nenhum provedor do OpenIDConnect foi encontrado em sua conta”

Se você não fizer a referência correta ao IdP do OIDC ao chamar a operação da API AssumeRoleWithWebIdentity, receberá a seguinte mensagem de erro:

“Ocorreu um erro (InvalidIdentityToken) ao chamar a operação AssumeRoleWithWebIdentity: Nenhum provedor OpenIDConnect foi encontrado em sua conta”

Para solucionar esse problema, execute as seguintes ações:

  • Verifique se você está passando o nome de recurso da Amazon (ARN) correto do IdP do OIDC ao chamar a operação da API AssumeRoleWithWebIdentity.
    Observação: uma barra final é adicionada automaticamente ao ARN do IdP do OIDC quando você usa a AWS CLI para sua configuração. A barra final não é adicionada quando você usa SDKs da AWS.
  • Verifique se a política de confiança para o perfil do IAM concede confiança às entidades principais que se federam por meio do IdP do OIDC.
    Importante: o IdP do OIDC e o perfil do IAM devem estar na mesma conta da AWS.
  • Verifique se o URL do IdP do OIDC na solicitação do AWS Security Token Service (AWS STS) corresponde ao URL do IdP do OIDC do IAM.
    Observação: às vezes, a mensagem de erro inclui o URL que está na solicitação do AWS STS.

“Verifique a configuração .well-known/openid-configuration do provedor: oidc_issuer_url é válido”

Você recebe a seguinte mensagem de erro quando o URL do IdP do OIDC está incorreto:

“Sua solicitação tem um problema. Veja os detalhes a seguir. Verifique a configuração .well-known/openid-configuration do provedor: oidc_issuer_url é válido”

Para resolver esse problema, verifique se o URL do IdP do OIDC atende aos seguintes requisitos:

  • É exclusivo em sua conta
  • Tem o invólucro correto
  • Começa com https://
  • Não contém um número de porta

Se o problema persistir, execute as seguintes ações:

“Não foi possível conectar-se à configuração openid do provedor: oidc_issuer_url”

Você recebe a seguinte mensagem de erro quando o emissor do IdP do OIDC usa uma cadeia de certificados que está fora de ordem ou inclui certificados duplicados ou adicionais:

“Sua solicitação tem um problema. Veja os detalhes a seguir. Não foi possível conectar-se à configuração openid do provedor: oidc_issuer_url”

Para solucionar esse problema, conclua as etapas a seguir:

  1. Instale e configure a ferramenta de linha de comando OpenSSL.
    Observação: substitua keys.example.com pelo URL mapeado para jwks_uri nos metadados do IdP do OIDC.

  2. Na ferramenta de linha de comando OpenSSL, execute o comando openssl-s_client para baixar a cadeia de certificados do IdP do OIDC:

    openssl s_client -servername keys.example.com -showcerts -connect keys.example.com:443
  3. Confirme se a cadeia de certificados do IdP do OIDC começa com o domínio ou URL do emissor, depois com o certificado intermediário e termina com o certificado raiz.

Se a ordem da cadeia de certificados for diferente, você receberá um erro de incompatibilidade de assinatura e o STS não validará o JSON Web Token (JWT). Para obter mais informações sobre os padrões da cadeia de certificados, consulte certificate_list na seção Server certificate no site da RFC Series.

“O token de identificação fornecido não é um JWT válido”

Você recebe a seguinte mensagem de erro porque criptografou o JWT ou o JWT usa caracteres não suportados quando o IdP do OIDC é federado no IAM:

“Ocorreu um erro (InvalidIdentityToken) ao chamar a operação AssumeRoleWithWebIdentity: O token de identificação fornecido não é um JWT válido”

Para solucionar esse problema, execute as seguintes ações:

  • Formate os valores dos parâmetros do cabeçalho JWT como “string”. Qualquer outro tipo de dado no cabeçalho JWT resulta em um erro.
  • Execute uma ferramenta de decodificação on-line para verificar as informações que você passou no cabeçalho JWT.
  • Remova valores desnecessários dos parâmetros do cabeçalho.

Observação: os OIDCs personalizados suportam os algoritmos de assinatura: RS256, RS384, RS512, HS256, HS384 e HS512. A federação do OIDC no IAM não oferece suporte a JWTs criptografados.

"Não foi possível recuperar a chave de verificação do seu provedor de identidades"

“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. Consulte a documentação AssumeRoleWithWebIdentity para obter os requisitos”

Você pode receber a mensagem de erro anterior pelos seguintes motivos:

  • Os endpoints .well-known e jwks_uri do IdP OIDC não podem ser acessados na Internet pública.
  • Um firewall personalizado está bloqueando a solicitação da API.
  • Há mais de 5 segundos de latência nas solicitações da API do IdP do OIDC para o endpoint STS.
  • O AWS STS não pode verificar a chave do IdP do OIDC porque o JSON Web Key Set (JWKS) tem um grande número de chaves que fazem com que as solicitações sejam limitadas.

Para solucionar esses problemas, realize as seguintes ações:

  • Verifique se os endpoints .well-known e jwks_uri do IdP do OIDC estão acessíveis publicamente.
  • Verifique as configurações do firewall para confirmar se os domínios não estão em uma lista de negações.
  • Verifique a latência da operação total. Use o recuo exponencial, se necessário.
  • Remova as chaves desnecessárias do JWKS e teste a configuração.

Para obter mais informações sobre como resolver essa mensagem de erro, consulte Como resolvo o erro “InvalidIdentityToken” de chamada da API AssumeRoleWithWebIdentity do AWS STS?

Observação: o AWS CloudTrail não registra o erro “InvalidIdentityToken” porque a falha acontece no lado do cliente.

“Chaves de condição não suportadas foram usadas”

Você recebe a seguinte mensagem de erro ao usar chaves de condição não suportadas na política de confiança de perfil do IAM do IdP do OIDC:

“Ocorreu um erro desconhecido para AssumeRoleWithWebIdentity: Chaves de condição não suportadas foram usadas”

Para resolver esse problema, crie uma política de confiança com as chaves disponíveis para a federação de identidades na web da AWS.

“Público de tokens incorreto”

Você recebe a seguinte mensagem de erro quando a declaração de público do JWT não corresponde ao identificador exclusivo de uma aplicação que usa o IdP do OIDC:

“Ocorreu um erro (InvalidIdentityToken) ao chamar a operação AssumeRoleWithWebIdentity: Público de tokens incorreto”

Para verificar o público do IdP do OIDC do IAM, execute o seguinte comando get-open-id-connect-provider:

aws iam get-open-id-connect-provider --open-id-connect-provider-arn OIDC_ARN_Example-provider

Observação: substitua OIDC_ARN_Example-provider pelo ARN do seu IdP do OIDC.

O valor do público deve corresponder ao ID do cliente da aplicação.

“Impressão digital retornada (muito grande para o IAM)."

Você recebe a mensagem de erro “Impressão digital retornada (muito grande para o IAM)." quando você adiciona uma impressão digital incorreta ao IdP do OIDC no IAM.

Para resolver esse problema, verifique se você está usando a impressão digital correta. Para obter manualmente a impressão digital, consulte obter a impressão digital do certificado.

Para obter mais informações, consulte Obter a impressão digital de um provedor de identidades OpenID Connect.

“O público de tokens contém mais de um público enquanto a parte autorizada não está presente”

Você recebe a seguinte mensagem de erro ao definir mais de um público em um token JWT:

"InvalidIdentityToken: O público de tokens contém mais de um público enquanto a parte autorizada não está presente”

A AWS não oferece suporte a tokens JWT com vários públicos, mas você pode configurar um IdP do OIDC com vários IDs de clientes como públicos.

Para solucionar esse problema, conclua as etapas a seguir:

“Não é possível configurar o OpenID Connect com uma aplicação privada”

Você recebe a seguinte mensagem de erro quando o IdP do OIDC é privado porque os endpoints .well-known/openid-configuration e jwks_uri não estão acessíveis publicamente pela Internet:

“Não é possível configurar o OpenID Connect com uma aplicação privada (por exemplo: instância do Gitlab)”

Para solucionar esse problema, execute as seguintes ações:

  • Configure os endpoints .well-known/openid-configuration e jwks_uri para que possam ser acessados pela Internet.
    Observação: o IAM não oferece suporte a configurações de proxy para federação do OIDC no IAM. Mesmo quando você adiciona manualmente uma impressão digital, as solicitações subsequentes de AssumeRoleWithWebIdentity ao STS ainda falham porque o endpoint jwks_uri não está acessível publicamente. O STS não pode validar a assinatura no JWT para emitir credenciais.
  • Use o Amazon Cognito para gerar credenciais de cliente que você pode usar para federar sua aplicação para um grupo de usuários do Amazon Cognito. No grupo de usuários, você pode assumir um perfil de um banco de identidades do Amazon Cognito que tem acesso a serviços específicos da AWS em sua conta. Para cada aplicação, você pode usar um cliente exclusivo para se autenticar nos bancos de identidades do Amazon Cognito para diferenciar os níveis de acesso.
    Importante: para se autenticar no Amazon Cognito, talvez seja necessário executar codificação adicional, pois você deve incluir o Amazon Cognito na tarefa da aplicação.
  • Use AWS Private Certificate Authority para implementar IAM Roles Anywhere.
  • Defina um endpoint de interface de nuvem privada virtual (VPC) para o AWS STS para manter seu tráfego de autenticação dentro de uma VPC.

“Erro OpenIdInvalidIDPResponseException”

Você recebe a seguinte mensagem de erro quando os metadados do IdP do OIDC não têm atributos obrigatórios:

“Erro OpenIdInvalidIDPResponseException ao obter a impressão digital do provedor de identidades do OIDC do IAM”

Para resolver esse problema, entre em contato com o IdP do OIDC para determinar os atributos que estão faltando. Para obter mais informações sobre padrões de metadados e atributos obrigatórios, consulte Obtaining OpenID provider configuration information no site do OpenID.

“O certificado HTTPS do provedor OpenIDConnect não corresponde à impressão digital configurada”

Você recebe a seguinte mensagem de erro quando a impressão digital no IdP do OIDC expira ou não corresponde à autoridade de certificação:

“Token de login inválido. O certificado HTTPS do provedor OpenIDConnect não corresponde à impressão digital configurada”

Para solucionar esse problema, conclua as etapas a seguir:

  1. Obtenha manualmente a impressão digital do certificado.
  2. Use UpdateOpenIDConnectProviderThumbprint para atualizar a impressão digital para que corresponda ao IdP do OIDC.

“Erro AccessDenied registrado para AssumeRoleWithWebIdentity”

Você pode receber a mensagem “Erro AccessDenied registrado para AssumeRoleWithWebIdentity” pelos seguintes motivos:

  • O ARN do perfil do IAM que está no parâmetro de solicitação está incorreto.
  • A entidade principal que executa a ação AssumeRoleWithWebIdentity não tem permissões suficientes.
  • O valor do parâmetro DurationSeconds é maior do que a configuração de duração máxima para o perfil do IAM.

Para resolver esses problemas, realize as seguintes ações:

  • Inclua o ARN correto do perfil do IAM na ação AssumeRoleWithWebIdentity.
    Observação: os ARNs de perfil diferenciam maiúsculas de minúsculas.
  • Para determinar as permissões necessárias para a ação AssumeRoleWithWebIdentity, consulte a seção Permissões de AssumeRoleWithWebIdentity.
  • Se você usa o AWS Organizations, verifique suas políticas de controle de serviços (SCPs) para confirmar se elas incluem as permissões necessárias.
  • Se a solicitação contiver tags de sessão, autorize aws:TagSession na política de confiança.
  • Certifique-se de que a configuração de duração máxima da sessão para o perfil do IAM seja sempre maior ou igual ao parâmetro SessionDuration.