Solucionar problemas do Amazon Cognito - Amazon Cognito

Solucionar problemas do Amazon Cognito

Este capítulo fornece soluções para problemas comuns que você pode encontrar ao trabalhar com o Amazon Cognito. As implementações do Amazon Cognito podem enfrentar vários desafios em fluxos de autenticação, configurações de grupos de usuários e configurações de federação de identidades. Se estiver desenvolvendo uma nova aplicação ou mantendo uma existente, este guia de solução de problemas ajudará você a identificar e resolver problemas comuns rapidamente.

Erros de configuração de domínios personalizados

Ao configurar nomes de domínios personalizados no Amazon Cognito, você poderá receber mensagens de erro. Os erros comuns incluem problemas de validação, problemas de certificado ou conflitos de domínio.

Custom domain is not a valid subdomain

Esse erro indica um problema com a resolução de DNS para o domínio principal. O Amazon Cognito não é compatível com domínios de primeiro nível e exige que o domínio principal tenha um registro DNS A para validação.

Problema

Esse erro indica um problema com a resolução de DNS para o domínio principal. O Amazon Cognito não é compatível com domínios de primeiro nível e exige que o domínio principal tenha um registro DNS A para validação.

Solução
  • Criar um registro A para o domínio principal: você deve criar um registro A na configuração de DNS para o domínio principal do seu domínio personalizado.

    • Exemplo: se seu domínio personalizado for auth.xyz.yourdomain.com, o domínio principal será xyz.yourdomain.com. Se você quiser configurar xyz.yourdomain.com como um domínio personalizado, o principal será yourdomain.com.

    • O domínio principal deverá apontar para um endereço IP válido. Se não apontar para um endereço IP real, você poderá usar um endereço IP fictício, como 8.8.8.8.

  • Verificar a propagação de DNS (opcional, mas recomendado): para garantir que seu provedor de DNS tenha propagado a alteração, você pode executar um comando dig.

    • Se estiver usando auth.xyz.yourdomain.com como domínio personalizado: dig A xyz.yourdomain.com +short

    • Se estiver usando xyz.yourdomain.com como domínio personalizado: dig A yourdomain.com +short

    • O comando deverá retornar o endereço IP que você configurou. Se não retornar, espere até que a alteração tenha se propagado totalmente.

  • Remover o registro A do domínio principal: após criar com sucesso o domínio personalizado no Amazon Cognito, você poderá remover o registro A criado para o domínio principal, caso seja fictício.

Para obter mais informações, consulte Usar o próprio domínio para a IU hospedada.

Domain already associated with another user pool

Os nomes de domínios personalizados devem ser exclusivos em todas as regiões e Contas da AWS.

Problema

Os nomes de domínios personalizados devem ser exclusivos em todas as regiões e Contas da AWS.

Solução
  • Para usar o nome de domínio para um novo grupo de usuários, é necessário excluir o domínio personalizado do grupo de usuários ao qual ele está associado atualmente.

  • Aguardar após a exclusão: leva algum tempo para o domínio personalizado ser totalmente excluído do primeiro grupo de usuários. Criar um novo domínio personalizado com o mesmo nome imediatamente após a exclusão ainda pode resultar nesse erro. Aguarde alguns minutos antes de tentar novamente.

One or more of the CNAMEs that you provided are already associated with a different resource

Quando você cria um domínio personalizado, o Amazon Cognito cria uma distribuição do Amazon CloudFront gerenciada pela AWS. Um nome de domínio só pode ser usado com uma distribuição do Amazon CloudFront. Esse erro ocorre se o nome de domínio já estiver em uso como um domínio alternativo para outra distribuição do Amazon CloudFront.

Problema

Quando você cria um domínio personalizado, o Amazon Cognito cria uma distribuição do Amazon CloudFront gerenciada pela AWS. Um nome de domínio só pode ser usado com uma distribuição do Amazon CloudFront. Esse erro ocorre se o nome de domínio já estiver em uso como um domínio alternativo para outra distribuição do Amazon CloudFront.

Solução
  • Opção 1: use um nome de domínio diferente para seu domínio personalizado do Amazon Cognito.

  • Opção 2: se você usar o nome de domínio para o Amazon Cognito, não o use com outra distribuição do Amazon CloudFront.

The specified SSL certificate doesn't exist

O Amazon Cognito usa o Amazon CloudFront, que exige que o certificado do AWS Certificate Manager (ACM) esteja na Região da AWS us-east-1 (Norte da Virgínia), independentemente da região do grupo de usuários.

Problema

O Amazon Cognito usa o Amazon CloudFront, que exige que o certificado do AWS Certificate Manager (ACM) esteja na Região da AWS us-east-1 (Norte da Virgínia), independentemente da região do grupo de usuários.

Solução
  • Verificar a região do certificado: confirme se o certificado do ACM está na região us-east-1.

  • Verificar a validade do certificado: verifique se o certificado selecionado não está expirado.

  • Certificados importados: se você importou o certificado para o ACM, verifique se:

    • Ele foi emitido por uma autoridade de certificação pública.

    • Ele inclui a cadeia de certificados correta.

  • Verificação de política do AWS KMS: uma declaração deny explícita em uma política do AWS Key Management Service (AWS KMS) para o perfil ou usuário do IAM que está criando o domínio pode causar esse erro. Especificamente, verifique se há negações explícitas nas ações kms:DescribeKey, kms:CreateGrant e kms:*.

Invalid refresh tokenErro

Problema

Você recebe um erro Invalid refresh token ao tentar usar um token de atualização para obter novos tokens de acesso e ID do seu grupo de usuários do Amazon Cognito usando a operação de API AdminInitiateAuth ou InitiateAuth.

Solução

Implemente as seguintes etapas de solução de problemas com base na configuração do grupo de usuários e no uso da API:

  • Garantir um ID do cliente da aplicação consistente: ao chamar a API AdminInitiateAuth ou InitiateAuth para atualização de token, você deve usar o mesmo ID do cliente da aplicação usado durante a autenticação inicial que gerou o token de atualização.

  • Confirmar o dispositivo: se você tiver o Monitoramento de dispositivos habilitado em seu grupo de usuários, mas o dispositivo do usuário não tiver sido confirmado, será necessário primeiro chamar a API ConfirmDevice. Depois que o usuário confirmar o dispositivo, você poderá trocar o token de atualização.

  • Incluir a chave do dispositivo na solicitação de atualização: se o monitoramento de dispositivos estiver habilitado, inclua a chave exclusiva do dispositivo como um AuthParameter ao usar o fluxo REFRESH_TOKEN_AUTH:

    { "AuthFlow": "REFRESH_TOKEN_AUTH", "AuthParameters": { "REFRESH_TOKEN": "example_refresh_token", "SECRET_HASH": "example_secret_hash", // Required if your app client uses a client secret "DEVICE_KEY": "example_device_key" } }
  • Usar USER_SRP_AUTH para monitoramento de dispositivos: se você estiver usando o monitoramento de dispositivos, o fluxo de autenticação inicial deverá ser USER_SRP_AUTH.

Para obter mais informações, consulte Trabalhar com dispositivos de usuários no grupo de usuários.

Erros de resposta SAML inválida na federação

Os usuários recebem várias Invalid SAML response e erros semelhantes ao tentarem se federar no Amazon Cognito usando o SAML 2.0. Esses erros podem ocorrer devido a problemas de mapeamento de atributos, problemas de certificado ou incompatibilidades de configuração.

Invalid user attributes: Required attribute

Problema

Um usuário não tem um valor para um atributo obrigatório no grupo de usuários, ou o IdP está tentando remover ou atualizar um atributo imutável.

Solução
  • Verifique os Atributos obrigatórios definidos na configuração do grupo de usuários.

  • Usando ferramentas de captura de rede em seu navegador, recupere a resposta SAML. Talvez seja necessário realizar a decodificação de URL e base64. Verifique se o atributo está presente na declaração SAML.

  • Faça login no provedor de identidades e analise os atributos que ele está enviando para o Amazon Cognito. Verifique se o IdP está configurado para enviar o atributo obrigatório usando o nome correto.

  • Para atributos imutáveis, execute o seguinte comando AWS CLI para identificá-los: aws cognito-idp describe-user-pool --user-pool-id USER-POOL-ID --query 'UserPool.SchemaAttributes[?Mutable==`false`].Name'.

  • Nos mapeamentos de atributos SAML do IdP, exclua qualquer mapeamento que tenha como alvo um atributo imutável do Amazon Cognito. Como alternativa, atualize o atributo de destino para um atributo diferente e mutável.

Invalid SAML response received: SAML Response signature is invalid

Problema

O IdP atualizou seu certificado de assinatura SAML, causando uma incompatibilidade entre o certificado na resposta SAML e o arquivo de metadados armazenado no Amazon Cognito.

Solução
  1. Baixe o arquivo de metadados mais recente do seu IdP.

  2. No console do Amazon Cognito, navegue até Provedores sociais e externos do grupo de usuários, edite o provedor SAML e substitua o arquivo de metadados existente pelo arquivo recém-baixado.

Audience restriction ou Application with identifier not found

Problema

Um ID de entidade incorreto está configurado no IdP ou a declaração usa o nome de recurso uniforme (URN) de outro grupo de usuários.

Solução
  1. Obtenha o ID do grupo de usuários do Amazon Cognito na seção Visão geral no console.

  2. No console de gerenciamento do IdP, atualize o ID da entidade na aplicação SAML para o grupo de usuários. Configure o ID da entidade para corresponder ao formato urn:amazon:cognito:sp:USER_POOL_ID. Substitua USER_POOL_ID pelo ID do grupo de usuários da etapa anterior.

An error was encountered with the requested page

Problema

O URL do Assertion Consumer Service (ACS) registrado com o IdP está configurado incorretamente ou o IdP não está enviando a resposta SAML usando a associação POST obrigatória.

Solução
  • No console de gerenciamento do IdP, atualize a aplicação com o formato de URL do ACS correto, garantindo que ele use a vinculação HTTP POST.

  • Formato de domínio padrão: https://cognito-idp.Region.amazonaws.com/your user pool ID/saml2/idpresponse

  • Formato de domínio personalizado: https://auth.example.com/saml2/idpresponse

Invalid relayState from identity provider

Problema

O parâmetro RelayState está ausente ou é inválido, ou o URL é incompatível entre o IdP e o Amazon Cognito.

Solução

Para obter mais informações, consulte Como usar provedores de identidade SAML com um grupo de usuários.

Usuários de login gerenciado não podem selecionar um fator de MFA

Problema

Os usuários não conseguem escolher seu método preferencial de MFA ao fazer login por meio do login gerenciado, ou não estão sendo solicitados a usar o método de MFA esperado.

Solução

O Amazon Cognito segue uma lógica específica para determinar quais fatores de MFA estão disponíveis para os usuários com base nas configurações do grupo de usuários, nos atributos do usuário e na configuração de recuperação da conta. Por exemplo, os usuários não podem usar a MFA por e-mail se o e-mail estiver configurado como o método principal de recuperação da conta.

Para substituir a seleção padrão do fator de MFA, você pode implementar uma dessas abordagens:

  • Para aplicações públicas: use SetUserMFAPreference com um token de acesso válido para permitir que os usuários definam suas próprias preferências de MFA

  • Para aplicações gerenciadas pelo administrador: use AdminSetUserMFAPreference com credenciais da AWS para configurar as preferências de MFA do usuário

Ambas as operações permitem que você habilite ou desabilite os métodos de MFA por SMS, e-mail e TOTP para usuários individuais e defina um método como preferencial.

Para obter mais informações, consulte Adicionar MFA a um grupo de usuários.

Usuários sem senha e com chave de acesso não conseguem usar a MFA

Problema

Os usuários que fazem login com métodos de autenticação sem senha ou com chaves de acesso não conseguem adicionar ou usar a autenticação multifator.

Solução

Essa é uma limitação pretendida. É possível configurar o grupo de usuários de modo que os usuários disponham de MFA ou façam login com fatores sem senha, mas não ambos. A MFA está disponível somente para fluxos de autenticação baseada em senha.

Para mais informações, consulte Autenticação com grupo de usuários.

Não é possível receber o código de redefinição de senha por e-mail/SMS

Problema

Os usuários não recebem códigos de verificação durante o fluxo de trabalho de esquecimento de senha por e-mail ou SMS.

Solução

Há vários motivos pelos quais os códigos de verificação podem não ser recebidos. Para solucionar esse problema, siga esta lista de verificação:

  • Verifique as pastas de spam e lixo eletrônico do usuário.

  • Confirme se o usuário existe no grupo de usuários.

  • Verifique se o status do usuário não é FORCE_CHANGE_PASSWORD. Se esse for o caso, o usuário foi criado por um administrador e o Amazon Cognito solicitará que ele defina uma senha quando fizer login com a senha temporária.

  • Verifique se o usuário tem um atributo de e-mail ou telefone verificado.

  • Verifique o limite de gastos da sua conta para mensagens SMS.

  • Verifique a cota de envio de mensagens do Amazon Simple Email Service (Amazon SES).

  • Verifique se o SMS e o Amazon SES (se o grupo de usuários estiver configurado para Enviar e-mail com o Amazon SES) foram retirados do sandbox. Se eles não tiverem sido retirados do sandbox, endereços de e-mail ou números de telefone que não foram verificados pelo Amazon SES ou AWS End User Messaging SMS não poderão receber códigos de redefinição de senha.

  • Se o usuário tiver um fator de MFA ativo, verifique se ele não está tentando gerar uma mensagem para o mesmo fator. Por exemplo, usuários com MFA por e-mail ativa não podem enviar códigos de redefinição de senha por e-mail.

Para obter mais informações, consulte Configurações de e-mail para grupos de usuários do Amazon Cognito e Configurações de mensagens SMS para grupos de usuários do Amazon Cognito.

SECRET_HASHErros de

Problema

Solicitações de API de autenticação para clientes da aplicação com segredos do cliente retornam erros como An error occurred (NotAuthorizedException) when calling the ForgotPassword operation: Client 1example23456789 is configured with secret but SECRET_HASH was not received.

Solução

Sua aplicação deve calcular o SECRET_HASH para o usuário atual, o cliente da aplicação e o segredo do cliente. O método de cálculo é:

Base64 ( HMAC_SHA256 ( "client secret", "Username" + "Client Id" ) )

Para obter o segredo do cliente:

  1. Abra o console do Amazon Cognito e navegue até o cliente da aplicação pelo menu Clientes da aplicação. Na seção Informações do cliente de aplicação, localize Segredo do cliente. Selecione Mostrar segredo do cliente e o segredo do cliente da aplicação será exibido.

  2. Gere uma solicitação DescribeUserPoolClient. O segredo do cliente estará incluído na resposta.

Para obter mais informações, consulte Computar valores de hash de segredo.

O console do Amazon Cognito escolhe uma configuração padrão para um novo grupo de usuários

Problema

Quando você configura um novo grupo de usuários no console, o Amazon Cognito escolhe várias configurações padrão para você. Algumas configurações não podem ser alteradas depois que o grupo de usuários é criado. Como você pode fazer escolhas informadas e entender o que o Amazon Cognito selecionou automaticamente?

Solução

A nova configuração do grupo de usuários no console do Amazon Cognito foi projetada para testes e prototipagem rápidos. O console apresenta somente as opções de configuração mais críticas, aquelas que não podem ser alteradas após a criação do grupo de usuários. Todas as outras configurações que o Amazon Cognito configura automaticamente podem ser modificadas posteriormente.

Recomendamos a seguinte abordagem:

  1. Use o console para criar grupos de usuários de teste enquanto refina sua implementação.

  2. Após determinar a configuração de produção, aplique essas configurações aos grupos de usuários de teste.

  3. Use as operações de API DescribeUserPool e DescribeUserPoolClient para gerar modelos JSON da configuração testada.

  4. Use esses modelos com ferramentas de implantação como SDKs da AWS, CDK, API REST ou CloudFormation para criar os recursos de produção.

Para obter mais informações, consulte Conceitos básicos dos grupos de usuários.

Recursos adicionais para solução de problemas

Para obter orientações adicionais sobre soluções de problemas e soluções fornecidas pela comunidade, você também pode explorar os seguintes recursos externos: