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
betweenENABLED
eLEGACY
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 unaInitiateAuth
API richiestaAdminInitiateAuth
or. Amazon Cognito restituisce un erroreNotAuthorizedException
generico quando il nome utente o la password non sono corretti. - Autenticazione basata su Secure Remote Password (SRP)
-
Per accedere a un utente con
USER_SRP_AUTH
, includi un nome utente e unSRP_A
parametro in unaInitiateAuth
API richiestaAdminInitiateAuth
or. In risposta, Amazon Cognito restituisceSRP_B
e aggiorna l'utente. Quando un utente non viene trovato, Amazon Cognito restituisce una risposta simulata nel primo passaggio, come descritto in 5054. RFCAmazon 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 unNotAuthorizedException
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 denominatoUserNotFound
. Quindi viene inviato nella richiesta dei trigger LambdaDefineAuthChallenge
,VerifyAuthChallenge
eCreateAuthChallenge
. 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 restituisceUserNotFound
.
L'elenco seguente mostra come personalizzare le risposte di errore nelle operazioni di creazione utente.
- SignUp
-
L'
SignUp
operazione ritornaUsernameExistsException
sempre quando è già stato utilizzato un nome utente. Per evitare che Amazon Cognito restituisca un erroreUsernameExistsException
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 erroreNotAuthorizedException
generico che indica che il nome utente o la password non erano corretti, anziché restituirePasswordResetRequiredException
. 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.
-
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" } } -
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
-
Shirley registra un nuovo account utente e fornisce l'indirizzo e-mail
jie@example.com
. Amazon Cognito non restituisce un erroreUsernameExistsException
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" } } -
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 utilizzaForgotPassword
, Amazon Cognito restituisce l'erroreExpiredCodeException
.
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 restituisceNotAuthorizedException
quando un utente non è autorizzato. Se il codice non corrisponde a quello previsto dal server, Amazon Cognito restituisceCodeMismatchException
.