Saltar al contenido

¿Cómo uso la AWS CLI para restablecer las contraseñas de los usuarios en Amazon Cognito?

4 minutos de lectura
0

Quiero usar la interfaz de la línea de comandos de AWS (AWS CLI) para ayudar a los usuarios a restablecer o cambiar sus contraseñas en Amazon Cognito.

Solución

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, consulta Solución de errores de AWS CLI. Además, asegúrate de utilizar la versión más reciente de la AWS CLI. En los siguientes comandos, sustituye VALID-ACCESS-TOKEN, USER-POOL-ID, CLIENT-ID, USERNAME, CONFIRMATION-CODE, NEW-PASSWORD y PREVIOUS-PASSWORD por tus valores.

Cambiar la contraseña como usuario

Nota: Para ejecutar el comando change-password, el usuario debe tener un token de acceso de usuario que haya iniciado sesión. El token de acceso debe incluir el ámbito aws.cognito.signin.user.admin.

Para cambiar la contraseña como usuario, ejecuta el siguiente comando change-password:

aws cognito-idp change-password --previous-password PREVIOUS-PASSWORD --proposed-password NEW-PASSWORD --access-token VALID-ACCESS-TOKEN

Restablecimiento de una contraseña de usuario como administrador

Para que un administrador restablezca la contraseña de un usuario, el usuario debe tener un correo electrónico o un número de teléfono verificados en el grupo de usuarios. Cuando el administrador ejecuta el comando admin-reset-user-password, Amazon Cognito envía automáticamente un código de confirmación al método de contacto verificado del usuario.

Como administrador, ejecuta el siguiente comando admin-reset-user-password para restablecer la contraseña del usuario:

aws cognito-idp admin-reset-user-password --user-pool-id USER-POOL-ID --username USERNAME

Nota: Cuando el usuario intenta iniciar sesión después de que el administrador restablezca la contraseña, recibe el error "PasswordResetRequiredException". A continuación, Amazon Cognito redirige el usuario al flujo de contraseña olvidada.

Una vez que el administrador ejecuta el comando admin-reset-user-password, el usuario ejecuta el siguiente comando confirm-forgot-password para establecer una contraseña nueva:

aws cognito-idp confirm-forgot-password --client-id CLIENT-ID --username USERNAME --confirmation-code CONFIRMATION-CODE --password NEW-PASSWORD

Si el usuario no tiene una dirección de correo electrónico o un número de teléfono verificados, el administrador recibe el error "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".

Para resolver este problema, el administrador ejecuta el siguiente comando admin-update-user-attributes para verificar la información de contacto del usuario y establecer los atributos email_verified o phone_number_verified en true:

aws cognito-idp admin-update-user-attributes --user-pool-id USER-POOL-ID --username USERNAME --user-attributes Name="email_verified",Value="true"

Una vez que el administrador verifique la información de contacto del usuario, puedes volver a ejecutar el comando admin-reset-user-password. Una vez que el usuario reciba el código de confirmación, puedes ejecutar el comando confirm-forgot-password para establecer la nueva contraseña.

Si el usuario sigue sin recibir el código de confirmación, consulta ¿Por qué Amazon Cognito no envía el código de verificación por correo electrónico o mensaje de texto SMS con la llamada a la API ForgotPassword?

Establecimiento de una contraseña permanente o temporal como administrador

Para establecer una contraseña permanente para el usuario, el administrador ejecuta el siguiente comando admin-set-user-password:

aws cognito-idp admin-set-user-password --user-pool-id USER-POOL-ID --username USERNAME --password NEW-PASSWORD --permanent

A continuación, el usuario puede iniciar sesión con la nueva contraseña permanente.

Para establecer una contraseña temporal para el usuario, el administrador ejecuta el siguiente comando admin-set-user-password:

aws cognito-idp admin-set-user-password --user-pool-id USER-POOL-ID --username USERNAME --password TEMPORARY-NEW-PASSWORD --no-permanent

Una vez que el administrador establece una contraseña temporal, el estado del usuario cambia a FORCE_CHANGE_PASSWORD. Cuando el usuario inicie sesión con la contraseña temporal, recibirá un desafío NEW_PASSWORD_REQUIRED.

Nota: La duración del token de sesión para completar el desafío de la contraseña es válida durante 3 minutos. Puedes modificar la duración en la configuración de duración del flujo de autenticación del cliente de la aplicación.

A continuación, el usuario ejecuta el siguiente comando respond-to-auth-challenge para establecer una contraseña nueva:

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

Importante: Si configuraste el cliente de tu aplicación con un secreto de cliente, el usuario debe incluir el parámetro hash secreto en el comando respond-to-auth-challenge para acceder al grupo de usuarios. Si el usuario recibe el error "Unable to verify secret hash for client", consulta ¿Cómo soluciono los errores "Unable to verify secret hash for client" de mi API de grupos de usuarios de Amazon Cognito?

OFICIAL DE AWSActualizada hace 6 meses