Gestione delle risposte agli errori relativi all'esistenza degli utenti - Amazon Cognito

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Gestione delle risposte agli errori relativi all'esistenza degli utenti

Amazon Cognito supporta la personalizzazione delle risposte di errore restituite dai pool di utenti. Sono disponibili risposte di errore personalizzate per le operazioni di creazione e autenticazione utente, ripristino password e conferma.

Utilizza l'impostazione PreventUserExistenceErrors di un client di applicazioni di un bacino d'utenza per abilitare o disabilitare errori relativi all'esistenza degli utenti. Quando crei una nuova app, il client PreventUserExistenceErrors è LEGACY o disabilitato per impostazione predefinita con i pool API di utenti di Amazon Cognito. Nella console Amazon Cognito, l'opzione Previeni gli errori di esistenza degli utenti, un'impostazione di ENABLED for, PreventUserExistenceErrors è selezionata per impostazione predefinita. Per aggiornare la PreventUserExistenceErrors configurazione, esegui una delle seguenti operazioni:

  • Modificate il valore di PreventUserExistenceErrors between ENABLED e LEGACY in una UpdateUserPoolClientAPIrichiesta.

  • Modifica il client dell'app nella console Amazon Cognito e modifica lo stato di Previeni gli errori di esistenza degli utenti tra selezionato (ENABLED) e deselezionato (). LEGACY

Se questa proprietà ha un valore diLEGACY, il client dell'app restituisce una risposta di UserNotFoundException errore quando un utente tenta di accedere con un nome utente che non esiste nel tuo pool di utenti.

Quando questa proprietà ha un valore diENABLED, il client dell'app non rivela l'inesistenza di un account utente nel pool di utenti con un UserNotFoundException errore. Una PreventUserExistenceErrors configurazione di ENABLED ha i seguenti effetti:

  • Amazon Cognito risponde con informazioni non specifiche alle API richieste la cui risposta potrebbe altrimenti rivelare l'esistenza di un utente valido.

  • L'accesso e la password dimenticata di Amazon Cognito APIs restituiscono una risposta generica di errore di autenticazione. La risposta di errore indica che il nome utente o la password non sono corretti.

  • La conferma dell'account Amazon Cognito e il recupero della password APIs restituiscono una risposta che indica che un codice è stato inviato a un supporto di consegna simulato, anziché una rappresentazione parziale delle informazioni di contatto di un utente.

Le seguenti informazioni descrivono in dettaglio i comportamenti delle operazioni del pool di utenti quando PreventUserExistenceErrors è impostato su. ENABLED

Operazioni di autenticazione e creazione degli utenti

È possibile configurare le risposte di errore sia nell'autenticazione Username-password che nell'autenticazione Secure Remote Password () SRP. Puoi anche personalizzare gli errori restituiti con l'autenticazione personalizzata. Le seguenti persone APIs eseguono queste operazioni di autenticazione:

  • AdminInitiateAuth

  • AdminRespondToAuthChallenge

  • InitiateAuth

  • RespondToAuthChallenge

L'elenco seguente mostra come personalizzare le risposte agli errori nelle operazioni di autenticazione utente.

Autenticazione con nome utente e password

Per accedere a un utente con ADMIN_USER_PASSWORD_AUTH eUSER_PASSWORD_AUTH, includi il nome utente e la password in una InitiateAuth API richiesta AdminInitiateAuth or. Amazon Cognito restituisce un errore NotAuthorizedException generico quando il nome utente o la password non sono corretti.

Autenticazione basata su Secure Remote Password (SRP)

Per accedere a un utente conUSER_SRP_AUTH, includi un nome utente e un SRP_A parametro in una InitiateAuth API richiesta AdminInitiateAuth or. In risposta, Amazon Cognito restituisce SRP_B e aggiorna l'utente. Quando un utente non viene trovato, Amazon Cognito restituisce una risposta simulata nel primo passaggio, come descritto in 5054. RFC Amazon Cognito restituisce lo stesso codice e un ID utente interno in UUIDformato per la stessa combinazione di nome utente e pool di utenti. Quando invii una RespondToAuthChallenge API richiesta con una prova della password, Amazon Cognito restituisce un NotAuthorizedException errore generico quando il nome utente o la password non sono corretti.

Nota

Puoi simulare una risposta generica con l'autenticazione di nome utente e password se utilizzi attributi di alias basati sulla verifica e il nome utente immutabile non è formattato come. UUID

Trigger Lambda di richieste di autenticazione personalizzate

Se utilizzi Trigger Lambda di richieste di autenticazione personalizzate e abiliti le risposte di errore, allora LambdaChallenge restituisce un parametro booleano denominato UserNotFound. Quindi viene inviato nella richiesta dei trigger Lambda DefineAuthChallenge, VerifyAuthChallenge e CreateAuthChallenge. Puoi utilizzare questo trigger per simulare le richieste di autenticazione personalizzate per un utente che non esiste. Se richiami il trigger Lambda pre-autenticazione per un utente che non esiste, Amazon Cognito restituisce UserNotFound.

L'elenco seguente mostra come personalizzare le risposte di errore nelle operazioni di creazione utente.

SignUp

L'SignUpoperazione ritorna UsernameExistsException sempre quando è già stato utilizzato un nome utente. Per evitare che Amazon Cognito restituisca un errore UsernameExistsException per indirizzi e-mail e numeri di telefono durante la registrazione di utenti nell'app, utilizza gli attributi alias basati sulla verifica. Per ulteriori informazioni sugli alias, consultare Personalizzazione degli attributi di accesso.

Per un esempio di come Amazon Cognito può impedire l'uso di SignUp API richieste per scoprire gli utenti nel tuo pool di utenti, consulta. Prevenzione degli errori UsernameExistsException relativi a indirizzi e-mail e numeri di telefono durante la registrazione

Utenti importati

Se PreventUserExistenceErrors è abilitato, durante l'autenticazione degli utenti importati viene restituito un errore NotAuthorizedException generico che indica che il nome utente o la password non erano corretti, anziché restituire PasswordResetRequiredException. Consulta Necessità degli utenti importati di ripristinare le loro password per maggiori informazioni.

Trigger Lambda di migrazione utenti

Amazon Cognito restituirà una risposta simulata per gli utenti inesistenti quando il trigger Lambda imposta una risposta vuota nel contesto dell'evento originale. Per ulteriori informazioni, consulta Trigger Lambda di migrazione utenti.

Prevenzione degli errori UsernameExistsException relativi a indirizzi e-mail e numeri di telefono durante la registrazione

L'esempio seguente dimostra come, quando configuri gli attributi di alias nel tuo pool di utenti, puoi evitare che indirizzi e-mail e numeri di telefono duplicati generino UsernameExistsException errori in risposta alle richieste. SignUp API È necessario aver creato il pool di utenti con indirizzo e-mail o numero di telefono come un attributo alias. Per ulteriori informazioni, consulta la sezione Personalizzazione degli attributi di accesso di Attributi del pool di utenti.

  1. Jie esegue la registrazione per un nuovo nome utente e fornisce anche l'indirizzo e-mail jie@example.com. Amazon Cognito invia un codice all'indirizzo e-mail.

    Comando di esempio AWS CLI

    aws cognito-idp sign-up --client-id 1234567890abcdef0 --username jie --password PASSWORD --user-attributes Name="email",Value="jie@example.com"

    Example response

    { "UserConfirmed": false, "UserSub": "<subId>", "CodeDeliveryDetails": { "AttributeName": "email", "Destination": "j****@e****", "DeliveryMedium": "EMAIL" } }
  2. Jie fornisce il codice inviato per confermare di essere il titolare dell'indirizzo email. Questo completa la registrazione come un utente.

    AWS CLI Comando di esempio

    aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=jie --confirmation-code xxxxxx
  3. Shirley registra un nuovo account utente e fornisce l'indirizzo e-mail jie@example.com. Amazon Cognito non restituisce un errore UsernameExistsException e invia un codice di conferma all'indirizzo e-mail di Jie.

    AWS CLI Comando di esempio

    aws cognito-idp sign-up --client-id 1234567890abcdef0 --username shirley --password PASSWORD --user-attributes Name="email",Value="jie@example.com"

    Example response

    { "UserConfirmed": false, "UserSub": "<new subId>", "CodeDeliveryDetails": { "AttributeName": "email", "Destination": "j****@e****", "DeliveryMedium": "EMAIL" } }
  4. In uno scenario diverso, Shirley è la titolare di jie@example.com. Shirley recupera il codice inviato da Amazon Cognito all'indirizzo e-mail di Jie e tenta di confermare l'account.

    AWS CLI Comando di esempio

    aws cognito-idp confirm-sign-up --client-id 1234567890abcdef0 --username=shirley --confirmation-code xxxxxx

    Example response

    An error occurred (AliasExistsException) when calling the ConfirmSignUp operation: An account with the email already exists.

Amazon Cognito non restituisce un errore alla richiesta aws cognito-idp sign-up di Shirley, nonostante jie@example.com sia stato assegnato a un utente esistente. Shirley deve dimostrare di essere titolare dell'indirizzo e-mail prima che Amazon Cognito restituisca una risposta di errore. In un pool di utenti con attributi alias, questo comportamento impedisce l'uso del pubblico SignUp API per verificare se esiste un utente con un determinato indirizzo e-mail o numero di telefono.

Questo comportamento è diverso dalla risposta restituita da Amazon Cognito alla richiesta SignUp con un nome utente esistente, come illustrato nell'esempio seguente. Sebbene Shirley apprenda da questa risposta che esiste già un utente con il nome utente jie, non viene informata di alcun indirizzo e-mail o numero di telefono associato all'utente.

Comando della CLI di esempio

aws cognito-idp sign-up --client-id 1example23456789 --username jie --password PASSWORD --user-attributes Name="email",Value="shirley@example.com"

Example response

An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists

Operazioni di ripristino della password

Amazon Cognito restituisce le seguenti risposte alle operazioni di reimpostazione della password utente quando si evitano errori relativi all’esistenza dell'utente.

ForgotPassword

Se un utente non viene trovato, è disattivato o non dispone di un meccanismo di consegna verificato per recuperare la password, Amazon Cognito restituisce CodeDeliveryDetails con un supporto di recapito simulato per un utente. Il supporto di recapito simulato è determinato dal formato del nome utente di input e dalle impostazioni di verifica del pool di utenti.

ConfirmForgotPassword

Amazon Cognito restituisce l'errore CodeMismatchException per gli utenti che non esistono o sono disabilitati. Se non viene richiesto un codice quando si utilizza ForgotPassword, Amazon Cognito restituisce l'errore ExpiredCodeException.

Operazioni di conferma

Amazon Cognito restituisce le seguenti risposte alle operazioni di conferma e verifica quando si evitano errori relativi all’esistenza dell'utente.

ResendConfirmationCode

Amazon Cognito restituisce l'errore CodeDeliveryDetails per un utente disabilitato o uno che non esiste. Per un utente esistente, Amazon Cognito invia un codice di conferma all'indirizzo e-mail o al telefono dell'utente.

ConfirmSignUp

ExpiredCodeException restituisce se un codice è scaduto. Amazon Cognito restituisce NotAuthorizedException quando un utente non è autorizzato. Se il codice non corrisponde a quello previsto dal server, Amazon Cognito restituisce CodeMismatchException.