¿Cómo cambiar el estado del usuario FORCE_CHANGE_PASSWORD?

Resuelto Dominique Vial asked hace 54 años • 14 respuestas

Al utilizar AWS Cognito, quiero crear usuarios ficticios con fines de prueba.

Luego uso la consola de AWS para crear dicho usuario, pero el estado del usuario está establecido en FORCE_CHANGE_PASSWORD. Con ese valor, este usuario no puede autenticarse.

¿Hay alguna manera de cambiar este estado?

ACTUALIZAR Mismo comportamiento al crear un usuario desde CLI

Dominique Vial avatar Jan 01 '70 08:01 Dominique Vial
Aceptado

Esto finalmente se agregó a AWSCLI: https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/admin-set-user-password.html

Puede cambiar la contraseña de un usuario y actualizar el estado usando:

aws cognito-idp admin-set-user-password \
  --user-pool-id <your-user-pool-id> \
  --username <username> \
  --password <password> \
  --permanent

Antes de usar esto, es posible que necesite actualizar su AWS CLI usando:

pip3 install awscli --upgrade

Ojasvi Monga avatar Jul 09 '2019 08:07 Ojasvi Monga

Sé que ha pasado un tiempo, pero pensé que esto podría ayudar a otras personas que encuentren esta publicación.

Puede utilizar la CLI de AWS para cambiar la contraseña de los usuarios; sin embargo, es un proceso de varios pasos:


Paso 1: obtenga un token de sesión para el usuario deseado:

aws cognito-idp admin-initiate-auth --user-pool-id %USER POOL ID% --client-id %APP CLIENT ID% --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=%USERS USERNAME%,PASSWORD=%USERS CURRENT PASSWORD%

Si esto devuelve un error sobre Unable to verify secret hash for client, cree otra aplicación cliente sin un secreto y use ese ID de cliente.

Paso 2: Si el paso 1 tiene éxito, responderá con el desafío NEW_PASSWORD_REQUIRED, otros parámetros del desafío y la clave de sesión del usuario. Luego, puede ejecutar el segundo comando para emitir la respuesta al desafío:

aws cognito-idp admin-respond-to-auth-challenge --user-pool-id %USER POOL ID% --client-id %CLIENT ID% --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses NEW_PASSWORD=%DESIRED PASSWORD%,USERNAME=%USERS USERNAME% --session %SESSION KEY FROM PREVIOUS COMMAND with ""%

Si recibe un error acerca de Invalid attributes given, XXX is missingpasar los atributos faltantes usando el formatouserAttributes.$FIELD_NAME=$VALUE

El comando anterior debería devolver un resultado de autenticación válido y los tokens apropiados.


Importante: Para que esto funcione, el grupo de usuarios de Cognito DEBE tener una aplicación cliente configurada con ADMIN_NO_SRP_AUTHfuncionalidad ( Paso 5 en este documento ).

Neutral Penguin avatar Jul 22 '2017 09:07 Neutral Penguin

Puede cambiar el estado de ese usuario FORCE_CHANGE_PASSWORDllamando respondToAuthChallenge()al usuario de esta manera:

var params = {
  ChallengeName: 'NEW_PASSWORD_REQUIRED', 
  ClientId: 'your_own3j6...0obh',
  ChallengeResponses: {
    USERNAME: 'user3',
    NEW_PASSWORD: 'changed12345'
  },
  Session: 'xxxxxxxxxxZDMcRu-5u...sCvrmZb6tHY'
};

cognitoidentityserviceprovider.respondToAuthChallenge(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

Después de esto, verás en la consola que el user3estado es CONFIRMED.

Ariel Araza avatar Nov 13 '2016 02:11 Ariel Araza