Quero recuperar uma senha do usuário no Amazon Cognito.
Resolução
Há duas maneiras de recuperar uma senha do usuário no Amazon Cognito:
- Por meio de um e-mail ou número de telefone verificado.
- Por meio de uma senha do usuário via administrador.
Verificação de e-mail ou número de telefone
Você pode usar o comando da API ForgotPassword para recuperar a senha de um usuário. O comando da API ForgotPassword envia um código de recuperação para um e-mail ou número de telefone verificado. O código de recuperação é válido por uma hora. Em seguida, use o comando da API ConfirmForgotPassword para inserir um código de confirmação que redefina a senha.
Observação: se você perceber erros ao executar os comandos da AWS Command Line Interface (AWS CLI), verifique se está usando a versão mais recente da AWS CLI.
Comandos da AWS CLI:
ForgotPassword
aws cognito-idp forgot-password --client-id 38fjsnc484p94kpqsnet7mpld0 --username jane@example.com
Saída:
{
"CodeDeliveryDetails": {
"Destination": "j***@e***.com",
"DeliveryMedium": "EMAIL",
"AttributeName": "email"
}
}
ConfirmForgotPassword
aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username=diego@example.com --password PASSWORD --confirmation-code CONF_CODE
Observação: você deve passar --secret-hash no comando da CLI se atender aos dois requisitos a seguir:
- Seus comandos da AWS CLI têm --client-id como parâmetro.
- O cliente da aplicação está configurado com um segredo.
Para calcular o hash secreto de um cliente de aplicação, consulte [How do I troubleshoot "Unable to verify secret hash for client
" errors from my Amazon Cognito user pools API?](https://repost.aws/pt/knowledge-center/cognito-unable-to-verify-secret-hash) (Como soluciono erros de “Não é possível verificar o hash secreto do cliente
” da minha API de grupos de usuários do Amazon Cognito?)
Redefinição do administrador
Observação: caso não seja o administrador, entre em contato com o administrador para concluir as ações a seguir.
Quando você chama o comando da API AdminResetUserPassword, a senha atual é invalidada e você deve alterá-la. Se um usuário tentar fazer login depois que o comando da API for chamado, a aplicação fará o seguinte:
- Recupere PasswordResetRequiredException.
- Direcione o usuário a redefinir a senha com o fluxo de senha esquecida.
Além disso, chamar a API resulta no envio de uma mensagem ao usuário com um código para alterar a senha se:
- O grupo de usuários tiver a verificação por telefone configurada e
- Existir um número de telefone ou e-mail verificado para o usuário.
Comandos da AWS CLI:
AdminResetUserPassword
aws cognito-idp admin-reset-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com
ConfirmForgotPassword
aws cognito-idp confirm-forgot-password --client-id 3n4b5urk1ft4fl3mg5e62d9ado --username diego@example.com --password PASSWORD --confirmation-code CONF_CODE
AdminSetUserPassword
Como administrador, você também pode usar o comando da API AdminSetUserPassword para chamar a senha do usuário em um grupo de usuários. A senha pode ser temporária ou permanente. Se for temporária, o status do usuário entrará no estado FORCE_CHANGE_PASSWORD. Quando você faz login, a resposta InitiateAuth/AdminInitiateAuth contém o desafio NEW_PASSWORD_REQUIRED. Se você não fizer login antes que expire, não poderá fazer login e deverá redefinir a senha. Depois de definir uma nova senha, ou se a senha for permanente, o status do usuário será definido como CONFIRMED (CONFIRMADO).
aws cognito-idp admin-set-user-password --user-pool-id us-west-2_aaaaaaaaa --username diego@example.com --password Hello@123 --permanent