Como redefino as senhas dos usuários no Amazon Cognito usando a AWS CLI?

5 minuto de leitura
0

Preciso aprender a usar a AWS Command Line Interface (AWS CLI) para ajudar os usuários a redefinir ou alterar suas senhas no Amazon Cognito.

Resolução

As senhas do Amazon Cognito podem ser redefinidas ou alteradas usando a AWS CLI. Um administrador do Amazon Cognito pode iniciar um fluxo de redefinição de senha para redefinir senhas de usuários. Um usuário do Amazon Cognito pode alterar sua senha sozinho, ou um administrador do Amazon Cognito pode definir a senha do usuário temporária ou permanentemente.

Redefinir uma senha de usuário

Para iniciar um fluxo de redefinição de senhas, um administrador e um usuário executam as seguintes etapas:

1.    Um administrador invoca a API AdminResetUserPassword.

Importante: nestes exemplos de comandos da AWS Command Line Interface (AWS CLI), substitua todas as instâncias de exemplos de strings por seus valores. (Por exemplo, substitua "example_user_pool_id" pelo ID do grupo de usuários.)

Exemplo de comando admin-reset-user-password:

aws cognito-idp admin-reset-user-password --user-pool-id example_user_pool_id --username example_user_name

2.    Quando a senha de um usuário é redefinida e ele tenta fazer login, recebe uma exceção PasswordResetRequiredException. Em seguida, o usuário é redirecionado para o fluxo de redefinição de senha.

Observação: o fluxo de redefinição de senha é igual ao fluxo de senha esquecida.

3.    O usuário com um endereço de e-mail ou um número de telefone verificado recebe uma mensagem com um código de confirmação que é exigido para redefinir sua senha.

Trabalhar com atributos de usuário não verificados:

1.    Se o usuário não tiver um endereço de e-mail ou um número de telefone verificado, o administrador receberá a seguinte mensagem de erro ao invocar a API AdminResetUserPassword:

An error occurred (InvalidParameterException) when calling the AdminResetUserPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number

2.    Para corrigir esse problema, o administrador invoca a API AdminUpdateUserAttributes e define os atributos email_verified ou phone_number_verified como true.

Um exemplo do comando admin-update-user-attributes:

aws cognito-idp admin-update-user-attributes --user-pool-id example_user_pool_id --username example_user_name --user-attributes Name="email_verified",Value="true"

3.    Se o usuário não receber o código de confirmação, siga as práticas recomendadas para solucionar o problema.

O usuário conclui o fluxo de senha esquecida:

1.    Depois de receber um código de confirmação, o usuário pode criar uma nova senha invocando a API ConfirmForgotPassword.

Exemplo do comando confirm-forgot-password:

aws cognito-idp confirm-forgot-password --client-id example_client_id --username example_user_name --confirmation-code example_code --password example_new password

Alterar a senha de um usuário

Os usuários podem alterar suas senhas sozinhos, e os administradores definem as senhas de usuário temporária ou permanentemente. Para alterar a senha de um usuário, um usuário ou administrador executa as seguintes etapas:

O usuário altera uma senha de usuário:

1.    O usuário invoca a API ChangePassword. O usuário deve ter um token de acesso válido emitido pelo Amazon Cognito para invocar a API ChangePassword.

Exemplo de comando change-password:

aws cognito-idp change-password --previous-password example_old_password --proposed-password example_new_password --access-token valid_access_token

O administrador cria uma nova senha de usuário permanente:

1.    O administrador invoca a API AdminSetUserPassword para criar uma nova senha permanente.

Exemplo de admin-set-user-password para alterar permanentemente a senha do usuário:

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_new_password --permanent

2.    Depois que o administrador altera permanentemente a senha do usuário, ele pode usar a nova senha para entrar na aplicação.

O administrador cria uma nova senha de usuário temporária:

1.    O administrador invoca a API AdminSetUserPassword para criar uma nova senha temporária.

Exemplo de admin-set-user-password para alterar temporariamente a senha do usuário:

aws cognito-idp admin-set-user-password --user-pool-id example_user_pool_id --username example_user_name --password example_temporary_password --no-permanent

Se o administrador alterar a senha do usuário para uma senha temporária, o usuário deverá executar etapas adicionais.

2.    O status do usuário muda para “FORCE_CHANGE_PASSWORD” após a invocação da API AdminSetUserPassword com uma senha temporária. Um usuário que tenta fazer login invocando a API InitiateAuth com uma senha temporária recebe um desafio de autenticação “NEW_PASSWORD_REQUIRED”.

Exemplo do comando initiate-auth:

aws cognito-idp initiate-auth --auth-flow USER_PASSWORD_AUTH --auth-parameters USERNAME=example_user_name,PASSWORD=example_temporary_password --client-id example_client_id

Saída:

{
  "ChallengeName": "NEW_PASSWORD_REQUIRED",
  "Session": "AYA......",
  "ChallengeParameters": {
    "USER_ID_FOR_SRP": "544.....",
    "requiredAttributes": "[]",
    "userAttributes": "{\"email_verified\":\"true\",\"email\":\"user@example.com\"}"
  }
}

Observação: a validade do token de sessão depende da configuração Authentication flow session duration(Duração da sessão do fluxo de autenticação) do cliente da aplicação. Por padrão, a duração da sessão desse token de sessão é de 3 minutos. Para modificar a validade do token, consulte as etapas para configurar a duração da sessão do fluxo de autenticação do cliente da aplicação.

3.    O usuário responde ao desafio “NEW_PASSWORD_REQUIRED” invocando a API RespondToAuthChallenge com o token de sessão que recebeu na etapa anterior.

Exemplo do comando respond-to-auth-challenge:

aws cognito-idp respond-to-auth-challenge --client-id example_client_id --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses USERNAME=example_username,NEW_PASSWORD="example_new_password" --session "example_session_token"

4.    O usuário recebe tokens de ID, acesso e atualização, e faz login na aplicação.

Importante: se o cliente da aplicação estiver configurado com um segredo de cliente no grupo de usuários, você deverá fornecer o hash secreto. Para saber mais, consulte Como soluciono os erros "Unable to verify secret hash for client <id-cliente>" (Não é possível verificar hash de segredo para o cliente <id-cliente>) da minha API de grupos de usuários do Amazon Cognito?


AWS OFICIAL
AWS OFICIALAtualizada há um ano