Quero saber por que o Amazon Cognito não enviou um e-mail com código de verificação ou mensagem de texto do serviço de mensagens curtas (SMS) quando eu uso a chamada de API ForgotPassword.
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.
Verificar as pastas de spam e lixo eletrônico
Certifique-se de que o e-mail de verificação não vá para as pastas de spam ou lixo eletrônico do usuário.
Confirmar se o usuário está no grupo de usuários
Confirme se o usuário está no Grupo de usuários Amazon Cognito. Para usar o console do Amazon Cognito para pesquisar usuários no grupo de usuários, consulte Gerenciamento e pesquisa de contas de usuários. Também é possível usar a chamada de API AdminGetUser.
Verificar o status do usuário
Verifique se o status do usuário não é FORCE_CHANGE_PASSWORD.
Até que os usuários criados pelos administradores entrem com a senha fornecida, o status do usuário é FORCE_CHANGE_PASSWORD por padrão.
Se o status do usuário for FORCE_CHANGE_PASSWORD, o usuário não poderá usar a chamada de API ForgotPassword e não receberá o código de verificação. Em vez disso, o Amazon Cognito solicita que o usuário altere sua senha.
Recuperar a conta da AWS do usuário
Se você chamar a API Esqueci a Senha quando seu nome de usuário e número de telefone não forem verificados, você receberá um dos seguintes erros:
- Na AWS CLI:
"An error occurred (InvalidParameterException) when calling the ForgotPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number"
- No console do Amazon Cognito:
"Could not reset password for the account, please contact support or try again."
Para recuperar a conta do usuário, verifique a configuração da conta do usuário. Verifique se o método de entrega da mensagem de recuperação é e-mail, telefone, somente e-mail, somente telefone, telefone, se disponível, ou nenhum.
Conclua as etapas a seguir:
- Abra o console do Amazon Cognito.
- Selecione o grupo de usuários.
- Em Autenticação, escolha Entrar.
- Na seção Recuperação da conta de usuário, verifique as opções em Método de envio da mensagem de recuperação. Em seguida, confirme se o método de envio é um atributo verificado para o usuário.
- Confirme se o método de envio é um atributo verificado para o usuário.
Os usuários no status CONFIRMED podem não ter um e-mail ou número de telefone verificado para recuperação de senha. Ao marcar a caixa de seleção de verificação para criar contas, você deve verificar o e-mail e o número de telefone das contas de usuário que um administrador criou.
Para resolver esse problema, use um dos métodos a seguir para definir o status verificado do seu e-mail e número de telefone como verdadeiro:
Atualize seus atributos de usuário
Se você for administrador, execute a seguinte chamada de API AdminUpdateUserAttributes:
aws cognito-idp admin-update-user-attributes --user-attributes Name=example-verification-method,Value=true --user-pool-id example-userpoolID --username example-user-name
Observação: substitua example-verification-method por email_verified ou phone_number_verified, dependendo do método de entrega da mensagem de recuperação do usuário. Substitua example-userpoolID pelo ID do grupo de usuários e example-user-name pelo nome do usuário que deseja executar a chamada de API Esqueci a Senha.
Se você for um usuário, faça login e execute a seguinte chamada de API UpdateUserAttributes:
aws cognito-idp update-user-attributes --user-attributes Name=example-verification-method,Value=true --access-token example-access-token
Observação: substitua example-verification-method por email_verified ou phone_number_verified, dependendo do método de entrega da mensagem de recuperação do usuário. Substitua example-access-token pelo valor do seu token de acesso.
Acionar Lambda de pré-inscrição
Use o gatilho Lambda de pré-inscrição para definir os atributos de e-mail e número de telefone de um usuário como verificados.
SignUp
Se você for um usuário, conclua as seguintes etapas:
- Execute a seguinte chamada de API SignUp:
aws cognito-idp sign-up --client-id example-client-ID --username example-user-name
Observação: substitua example-client-ID pelo ID do cliente da aplicação em que você deseja se inscrever. Substitua example-user-name pelo seu nome de usuário.
- Observe o valor da Sessão na saída do comando anterior.
- Execute a seguinte chamada de API ConfirmSignUp:
aws cognito-idp confirm-sign-up --client-id example-client-ID --username example-user-name --confirmation-code example-confirmation-code
Observação: substitua example-client-ID pelo ID do cliente da aplicação em que você deseja se inscrever. Substitua example-user-name pelo seu nome de usuário. Substitua example-confirmation-code pelo valor da Sessão que você anotou na etapa 2.
Se você for administrador, execute a seguinte chamada de API AdminConfirmSignUp:
aws cognito-idp admin-confirm-sign-up --client-id example-client-ID --username example-user-name
Observação: substitua example-client-ID pelo ID do cliente da aplicação. Substitua example-user-name pelo nome de usuário.
Verificar o limite de gastos da conta para mensagens SMS
O Amazon Cognito usa o Amazon Simple Notification Service (Amazon SNS) para enviar mensagens de texto SMS. Se a cota de gastos da conta que você definiu exceder o limite de gastos da sua conta, o Amazon SNS não publicará mensagens SMS.
Para verificar ou alterar o limite de gastos da conta, consulte Definir preferências de mensagens SMS usando o AWS Management Console.
Verificar a cota do Amazon SES
O Amazon Cognito usa o Amazon Simple Email Service (Amazon SES) para entregar e-mails. Por padrão, o Amazon Cognito permite um número limitado de e-mails diários para seu grupo de usuários. Para mais informações, consulte Cotas de número e tamanho do recurso.
Para definir uma maior entrega de e-mail, é possível configurar seu grupo de usuários para usar sua configuração de e-mail do Amazon SES. Para obter instruções, consulte Configurações de e-mail para grupos de usuários do Amazon Cognito.
Usar a chamada de API AdminSetUserPassword para redefinir a senha do usuário
Os administradores podem usar a chamada de API AdminSetUserPassword para definir a senha de um usuário em um grupo de usuários do Amazon Cognito como temporária ou permanente. Os usuários com senhas temporárias devem entrar e alterar a senha temporária antes que ela expire. Depois que um usuário redefine a senha temporária ou a senha é permanente, o status muda para CONFIRMED.
Informações relacionadas
Motivos de falha na entrega de SMS
admin-get-user
AdminResetUserPassword