Ir para o conteúdo

Como soluciono mensagens de erro de MFA no meu grupo de usuários do Amazon Cognito?

7 minuto de leitura
0

Eu recebo mensagens de erro quando configuro a autenticação multifator (MFA) no meu grupo de usuários do Amazon Cognito.

Resolução

Solucionar erros de MFA em SMS

Erro "InvalidSmsRoleAccessPolicyException"

Esse erro ocorre quando o perfil do AWS Identity and Access Management (AWS IAM) não tem permissão para usar o Amazon SNS para publicar mensagens de texto SMS.

Para solucionar esse problema, conclua as etapas a seguir para adicionar a permissão sns:Publish ao perfil do IAM:

  1. Abra o console do Amazon Cognito.
  2. No painel de navegação, selecione Grupos de usuários.
  3. Selecione seu grupo de usuários.
  4. No painel de navegação, em Autenticação, clique em Métodos de autenticação.
  5. Na seção SMS, anote o nome do ARN do perfil do IAM.
  6. Abra o console do IAM.
  7. No painel de navegação, selecione Perfis.
  8. Na barra de pesquisa, insira o nome do seu perfil do IAM e selecione seu perfil do IAM.
  9. Na seção Políticas de permissão, selecione a política anexada o perfil do IAM.
  10. Na página Detalhes da política, selecione Editar para adicionar a permissão sns:publish.
  11. Selecione Avançar.
  12. Clique em Salvar alterações.
  13. Verifique se uma política de controle de serviços (SCP) não bloqueia a ação sns:Publish.

Erro "InvalidSmsRoleTrustRelationshipException"

Esse erro ocorre quando o perfil do IAM não tem uma relação de confiança que permite que o Amazon Cognito assuma o perfil. Isso acontece quando o cognito-idp.amazonaws.com não é confiável ou o ID externo na política de confiança do perfil não corresponde ao que está na configuração de SMS do grupo de usuários.

Para solucionar esse problema, configure corretamente a política de confiança para o perfil do IAM. Para obter instruções, consulte Prepare uma função do IAM que o Amazon Cognito possa usar para enviar mensagens SMS com AWS End User Messaging SMS.

Erro "InvalidParameterException"

Esse erro ocorre quando a solicitação da API envia um parâmetro inválido para o Amazon Cognito. Para solucionar esse problema, especifique todos os valores necessários no parâmetro SmsMfaConfiguration da API SetUserPoolMfaConfig.

Solucionar erros de MFA do TOTP

Requisitos:

Observação: provedores de identidade (IdPs) externos gerenciam MFA para usuários federados. O Amazon Cognito não solicita MFA durante a federação de usuários.

Erro "NotAuthorizedException: Access token does not have required scopes"

Esse erro ocorre quando o token de acesso não inclui o escopo aws.cognito.signin.user.admin necessário para chamar a API AssociateSoftwareToken. Quando um usuário usa a API InitiateAuth para fazer login, a API InitiateAuth inclui automaticamente esse escopo no token de acesso.

No entanto, quando um usuário usa a página de login gerenciada para fazer login, verifique se o token de acesso inclui o escopo aws.cognito.signin.user.admin. Para verificar se o token inclui o escopo aws.cognito.signin.user.admin, decodifique a carga útil do token de acesso com Base64. Para obter mais informações, consulte Confirmar a estrutura do JWT.

Se o token não incluir o escopo aws.cognito.signin.user.admin, conclua as etapas a seguir para adicioná-lo:

  1. Abra o console do Amazon Cognito.
  2. No painel de navegação, selecione Grupos de usuários.
  3. Selecione o grupo de usuários que você deseja modificar.
  4. No painel de navegação, em Aplicações, selecione Clientes de aplicações.
  5. Selecione o cliente de aplicação que você deseja modificar.
  6. Clique na guia Páginas de login e, em seguida, selecione Editar.
  7. Na lista suspensa escopos do OpenID Connect, selecione aws.cognito.signin.user.admin.
  8. Clique em Salvar alterações.

Erro "NotAuthorizedException: Invalid session for the user, session can only be used once"

Esse erro ocorre quando um usuário tenta usar a reutilização de uma sessão. Se os usuários receberem esse erro no meio de um fluxo de autenticação com MFA do TOTP, eles deverão recomeçar o processo de autenticação desde o início. Para recomeçar a autenticação, use a API InitiateAuth ou a API AdminInitiateAuth.

Erro "NotAuthorizedException: Invalid session for the user, session is expired"

Esse erro ocorre quando a sessão expira. Por padrão, as sessões expiram após 3 minutos.

Para solucionar esse problema, aumente a duração do fluxo da sessão de autenticação no seu cliente de aplicação. É possível aumentar a duração em até 15 minutos.

Erro "CodeMismatchException: Invalid code or auth state for the user"

Esse erro ocorre quando o código TOTP do usuário não é válido, o estado do usuário não suporta a chamada de API ou o código TOTP expirou. Por exemplo, um usuário chama a API RespondToAuthChallenge com um desafio MFA_SETUP e não configurou a MFA do TOTP.

Para solucionar esse problema, realize as etapas a seguir:

  1. Configure a MFA do TOTP para o usuário.
  2. Chame a API RespondToAuthChallenge com o desafio MFA_SETUP.
  3. Verifique se as configurações de hora do dispositivo do usuário correspondem à hora atual para gerar códigos TOTP válidos.

Erro "InvalidParameterException: User does not have delivery config set to turn on SOFTWARE_TOKEN_MFA"

Esse erro ocorre quando você não configurou a MFA do TOTP para seus usuários. Para solucionar o problema, configure a MFA do TOTP antes de chamar a API SetUserMFAPreference ou AdminSetUserMFAPreference.

Erro "SoftwareTokenMFANotFoundException: Software Token MFA has not been enabled by the userPool"

Esse erro ocorre porque você não configurou a MFA do TOTP em seu grupo de usuários. Para solucionar o erro, configure a MFA do TOTP.

Erro "NotAuthorizedException: Invalid session for the use"

Esse erro ocorre pelos seguintes motivos:

  • Uma chamada de API inclui uma string de sessão incorreta.
  • As chamadas de API não ocorrem na sequência correta.

Para solucionar esse problema, configure as chamadas de API na sequência correta. Por exemplo, para receber a string da sessão na resposta, chame primeiro a API InitiateAuth. Para evitar um erro, verifique se a próxima chamada de API usa a string de sessão retornada em seu parâmetro de solicitação.

Erro "EnableSoftwareTokenMFAException: Code mismatch"

Esse erro ocorre quando o código TOTP que o usuário envia não corresponde ao que o Amazon Cognito espera durante a configuração da MFA do TOTP.

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

  • Recupere o código secreto da API AssociateSoftwareToken.
  • Salve o código secreto na aplicação autenticadora.
  • Envie um código TOTP atualizado.
  • Use o código secreto que você recuperou da API AssociateSoftwareToken para gerar um código QR. Em seguida, use o exemplo de código a seguir para configurar sua aplicação autenticadora.

Exemplo de código Python para gerar um código QR a partir do código secreto:

import pyotp
from qrcode.main import QRCode

secret_key = "secret-key-retrieved-from-associate-software-token-api"

totp = pyotp.TOTP(secret_key)
provisioning_uri = totp.provisioning_uri()

qr = QRCode()
qr.add_data(provisioning_uri)
qr.make()
qr.print_ascii()

Solucionar erros de MFA de e-mail

Antes de definir o e-mail como um fator de MFA, você deve configurar o Amazon Simple Email Service (Amazon SES) em seu grupo de usuários para enviar mensagens de e-mail aos seus usuários.

Quando você ativa a MFA e escolhe o e-mail como o segundo fator, o Amazon Cognito envia mensagens de e-mail para um endereço de e-mail não verificado. Depois que os usuários concluem a verificação de MFA por e-mail, o Amazon Cognito define o atributo phone_number_verified como verdadeiro.

Erro "InvalidParameterException: Cannot set EmailMfaConfiguration when user pool EmailConfiguration contains an EmailSendingAccount of COGNITO_DEFAULT"

Esse erro ocorre quando você usa a configuração padrão de e-mail. Para solucionar esse problema, defina as configurações de e-mail do Amazon SES para seu grupo de usuários.

Erro "InvalidParameterException: Cannot set EmailMfaConfiguration when user pool AccountRecoverySetting is not set or contains only verified_email in RecoveryMechanisms"

Esse erro ocorre quando você usa somente e-mail como método de recuperação da conta do usuário. Não é possível usar o mesmo fator na MFA e na recuperação de conta. Para solucionar esse problema, escolha um método de recuperação de conta diferente em vez do e-mail. Para obter instruções, consulte Configurar redefinição e recuperação de senha.

Erro “FeatureUnavailableInTierException”

Esse erro ocorre quando seu grupo de usuários tem o plano de atributos Lite. Somente os planos Essentials e Plus incluem MFA por e-mail. Para solucionar esse problema, mude o plano do seu grupo de usuários para o Essentials ou Plus.

Informações relacionadas

Adicionar MFA a um grupo de usuários

MFA de mensagens SMS e e-mail

AWS OFICIALAtualizada há 2 meses