Salta al contenuto

Perché Amazon Cognito non invia il codice di verifica tramite e-mail o SMS a seguito della chiamata API ForgotPassword?

5 minuti di lettura
0

Desidero sapere perché Amazon Cognito non invia un'e-mail con codice di verifica o un messaggio di testo SMS (Short Message Service) quando utilizzo la chiamata API ForgotPassword.

Risoluzione

Nota: se ricevi errori quando esegui i comandi dell'Interfaccia della linea di comando AWS (AWS CLI), consulta Risoluzione degli errori per AWS CLI. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Controlla le cartelle spam e posta indesiderata

Assicurati che l'e-mail di verifica non sia finita nella cartella spam o posta indesiderata dell'utente.

Verifica che l'utente esista nel pool di utenti

Verifica che l'utente esista nel pool di utenti Amazon Cognito. Per cercare utenti nel pool di utenti utilizzando la console Amazon Cognito, consulta Gestione e ricerca degli account utente. Puoi anche utilizzare la chiamata API AdminGetUser.

Verifica lo stato dell'utente

Verifica che lo stato dell'utente non sia FORCE_CHANGE_PASSWORD.

Finché gli utenti creati dagli amministratori non accedono con la password fornita, lo stato dell'utente è FORCE_CHANGE_PASSWORD per impostazione predefinita.

Se lo stato dell'utente è FORCE_CHANGE_PASSWORD, l'utente non può utilizzare la chiamata API ForgotPassword e non riceve il codice di verifica. Amazon Cognito richiede invece all'utente di modificare la password.

Recupera l'account AWS dell'utente

Se effettui la chiamata API ForgotPassword quando il nome utente e il numero di telefono non sono verificati, ricevi uno dei seguenti errori:

  • In AWS CLI:
    "An error occurred (InvalidParameterException) when calling the ForgotPassword operation: Cannot reset password for the user as there is no registered/verified email or phone_number"
  • Nella console Amazon Cognito:
    "Could not reset password for the account, please contact support or try again."

Per ripristinare l'account dell'utente, devi verificarne la configurazione. Verifica se il metodo di invio dei messaggi di ripristino è e-mail, telefono, solo e-mail, solo telefono, telefono se disponibile o nessuno.

Completa i seguenti passaggi:

  1. Apri la console Amazon Cognito.
  2. Seleziona il pool di utenti.
  3. In Autenticazione, scegli Accedi.
  4. Nella sezione Recupero dell'account utente, seleziona le opzioni in Metodo di consegna dei messaggi di recupero. Quindi verifica che il metodo di consegna sia un attributo verificato per l'utente.
  5. Verifica che il metodo di spedizione sia un attributo verificato per l'utente.

Gli utenti con stato CONFERMATO potrebbero non avere un'e-mail o un numero di telefono verificati per il recupero della password. Quando selezioni la casella di controllo della verifica per creare gli account, devi verificare l'e-mail e il numero di telefono degli account utente creati da un amministratore.

Per risolvere il problema, utilizza uno dei seguenti metodi per impostare lo stato Verificato dell'e-mail e del numero di telefono su true:

Aggiorna gli attributi dell'utente

Se sei un amministratore, esegui questa chiamata API AdminUpdateUserAttributes:

aws cognito-idp admin-update-user-attributes --user-attributes Name=example-verification-method,Value=true --user-pool-id example-userpoolID --username example-user-name

Nota: sostituisci example-verification-method con email_verified o phone_number_verified, a seconda del metodo di invio del messaggio di recupero dell'utente. Sostituisci example-userpoolID con l'ID del tuo pool di utenti e example-user-name con il nome dell'utente che desidera eseguire la chiamata API ForgotPassword.

Se sei un utente, accedi ed esegui questa chiamata API UpdateUserAttributes:

aws cognito-idp update-user-attributes --user-attributes Name=example-verification-method,Value=true --access-token example-access-token

Nota: sostituisci example-verification-method con email_verified o phone_number_verified, a seconda del metodo di invio del messaggio di recupero dell'utente. Sostituisci example-access-token con il valore del tuo token di accesso.

Trigger di pre-registrazione Lambda
Utilizza il trigger di pre-registrazione Lambda per impostare gli attributi e-mail e numero di telefono di un utente come verificati.

Chiamata API SignUp
Se sei un utente, completa i seguenti passaggi:

  1. Esegui questa chiamata API SignUP:
    aws cognito-idp sign-up --client-id example-client-ID --username example-user-name
    Nota: sostituisci example-client-ID con l'ID del client dell'app su cui desideri registrarti. Sostituisci example-user-name con il tuo nome utente.
  2. Annota il valore Session nell'output del comando precedente.
  3. Esegui questa chiamata API ConfirmSignup:
    aws cognito-idp confirm-sign-up --client-id example-client-ID --username example-user-name --confirmation-code example-confirmation-code
    Nota: sostituisci example-client-ID con l'ID del client dell'app su cui desideri registrarti. Sostituisci example-user-name con il tuo nome utente. Sostituisci example-confirmation-code con il valore Session annotato nel passaggio 2.

Se sei un amministratore, esegui questa chiamata API AdminConfirmSignUp:

aws cognito-idp admin-confirm-sign-up --client-id example-client-ID --username example-user-name

Nota: sostituisci example-client-ID con l'ID del client dell'app. Sostituisci example-user-name con il nome utente.

Controlla il limite di spesa dell'account per i messaggi SMS

Amazon Cognito utilizza Amazon Simple Notification Service (Amazon SNS) per l'invio dei messaggi di testo SMS. Se la quota di spesa dell'account che hai impostato supera il limite di spesa dell'account, Amazon SNS non pubblica messaggi SMS.

Per controllare o modificare la quota di spesa dell'account, consulta Impostazione delle preferenze di messaggistica SMS utilizzando la AWS Management Console.

Verifica la quota di Amazon SES

Amazon Cognito utilizza Amazon Simple Email Service (Amazon SES) per l'invio delle e-mail. Per impostazione predefinita, Amazon Cognito consente l'invio giornaliero di un numero limitato di e-mail per il pool di utenti. Per ulteriori informazioni, consulta Quote relative al numero e alla dimensione delle risorse.

Per impostare l'invio di un maggior numero di e-mail, puoi configurare il pool di utenti in modo che utilizzi la configurazione e-mail di Amazon SES. Per istruzioni, consulta Impostazioni e-mail per i pool di utenti Amazon Cognito.

Utilizza la chiamata API AdminSetUserPassword per reimpostare la password dell'utente

Gli amministratori possono utilizzare la chiamata API AdminSetUserPassword per impostare la password di un utente in un pool di utenti Amazon Cognito come temporanea o permanente. Gli utenti con password temporanea devono effettuare l'accesso e modificare la password prima che scada. Dopo che l'utente ha reimpostato la password temporanea o se la password è permanente, lo stato cambia in CONFERMATO.

Informazioni correlate

SMS delivery failure reasons (Motivi del mancato recapito degli SMS)

admin-get-user

AdminResetUserPassword

AWS UFFICIALEAggiornata 5 mesi fa