Come posso reimpostare le password degli utenti in Amazon Cognito utilizzando AWS CLI?

5 minuti di lettura
0

Devo imparare a usare l'interfaccia della linea di comando AWS (AWS CLI) per aiutare gli utenti a reimpostare o modificare le password in Amazon Cognito.

Risoluzione

Le password di Amazon Cognito possono essere reimpostate o modificate utilizzando AWS CLI. Un amministratore di Amazon Cognito può avviare un flusso di reimpostazione delle password per reimpostare le password degli utenti. Un utente Amazon Cognito può modificare la sua password autonomamente oppure un amministratore di Amazon Cognito può impostarla temporaneamente o permanentemente.

Reimpostazione della password di un utente

Per avviare un flusso di reimpostazione delle password, un amministratore e un utente devono completare i seguenti passaggi:

1.    Un amministratore richiama l'API AdminResetUserPassword.

Importante: nei comandi di esempio dell'interfaccia della linea di comando AWS (AWS CLI), sostituisci tutte le istanze delle stringhe di esempio con i tuoi valori. (Ad esempio, sostituisci "example_user_pool_id" con il tuo ID pool di utenti.)

Comando admin-reset-user-password di esempio:

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

2.    Quando la password di un utente viene reimpostata e l'utente prova ad accedere, riceverà un'eccezione PasswordResetRequiredException. Quindi, l'utente sarà reindirizzato al flusso di reimpostazione della password.

Nota: il flusso di reimpostazione della password è lo stesso del flusso della password dimenticata.

3.    L'utente con un indirizzo e-mail o un numero di telefono verificato riceve un messaggio con un codice di conferma necessario per reimpostare la password.

Operazioni con attributi utente non verificati:

1.    Se l'utente non dispone di un indirizzo e-mail o di un numero di telefono verificati, quando richiama l'API l'amministratore riceverà il seguente messaggio di errore 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.    Per risolvere questo problema, l'amministratore richiama l'API AdminUpdateUserAttributes e imposta gli attributi email_verified o phone_number_verified su true.

Comando admin-update-user-attributes di esempio:

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 l'utente non riceve il codice di conferma, segui le best practice per risolvere il problema.

L'utente completa il flusso della password dimenticata:

1.    Dopo aver ricevuto un codice di conferma, l'utente può creare una nuova password richiamando l'API ConfirmForgotPassword.

Comando confirm-forgot-password di esempio:

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

Modifica di una password utente

Gli utenti possono modificare le loro password autonomamente e gli amministratori le possono impostare temporaneamente o permanentemente. Per modificare la password di un utente, un utente o un amministratore deve completare le seguenti operazioni:

L'utente modifica una password utente:

1.    L'utente richiama l'API ChangePassword. L'utente deve disporre di un token di accesso valido emesso da Amazon Cognito per richiamare l'API ChangePassword.

Comando change-password di esempio:

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

L'amministratore crea una nuova password permanente per l'utente:

1.    L'amministratore richiama l'API AdminSetUserPassword per creare una nuova password permanente.

Comando admin-set-user-password di esempio per modificare in modo permanente la password dell'utente:

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

2.    Dopo che l'amministratore ha modificato definitivamente la password dell'utente, l'utente potrà utilizzarla per accedere all'applicazione.

L'amministratore crea una nuova password temporanea per l'utente:

1.    L'amministratore richiama l'API AdminSetUserPassword per creare una nuova password temporanea.

Comando admin-set-user-password di esempio per modificare temporaneamente la password dell'utente:

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 l'amministratore modifica la password dell'utente in modo che sia temporanea, l'utente dovrà completare ulteriori passaggi.

2.    Lo stato dell'utente cambia in "FORCE_CHANGE_PASSWORD" dopo aver invocato l'API AdminSetUserPassword con una password temporanea. Un utente che prova ad accedere richiamando l'API InitiateAuth con una password temporanea riceve una richiesta di autenticazione "NEW_PASSWORD_REQUIRED".

Comando initiate-auth di esempio:

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

Output:

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

Nota: la validità del token di sessione dipende dall'impostazione della durata della sessione del flusso di autenticazione del client dell'app. Per impostazione predefinita, la durata della sessione di questo token di sessione è di 3 minuti. Per modificare la validità del token, consulta la procedura per configurare la durata della sessione del flusso di autenticazione del client dell'app.

3.    L'utente risponde alla richiesta "NEW_PASSWORD_REQUIRED" richiamando l'API RespondToAuthChallenge con il token di sessione ricevuto nel passaggio precedente.

Comando respond-to-auth-challenge di esempio:

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.    L'utente riceve ID, accesso e token di aggiornamento e accede all'applicazione.

Importante: se il client dell'app è configurato con un segreto del client nel pool di utenti, dovrai fornire l'hash del segreto. Per ulteriori informazioni, consulta Come posso risolvere gli errori "Unable to verify secret hash for client <client-id>" (Impossibile verificare l'hash del segreto per il client <client-id>) dell'API dei pool di utenti di Amazon Cognito?


AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa