

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
<a name="cognito-user-pool-managing-errors"></a>

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 con l'API dei pool di utenti di Amazon Cognito `PreventUserExistenceErrors` è `LEGACY` o disabilitato per impostazione predefinita. 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:
+ Modifica il valore `PreventUserExistenceErrors` tra `ENABLED` e `LEGACY` in una richiesta [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateUserPoolClient.html)API.
+ 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 di`LEGACY`, 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 di`ENABLED`, 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 quando invii una richiesta per un nome utente che non esiste:
+ Amazon Cognito risponde con informazioni non specifiche alle richieste API laddove la sua risposta potrebbe altrimenti rivelare l'esistenza di un utente valido.
+ Amazon Cognito restituisce una risposta generica di errore di autenticazione alle richieste di password dimenticata e alle richieste di autenticazione con flussi di autenticazione ad *eccezione* dell'[autenticazione basata sulla scelta](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) (), ad esempio o. `USER_AUTH` `USER_SRP_AUTH` `CUSTOM_AUTH` La risposta di errore indica che il nome utente o la password non sono corretti.
+ Amazon Cognito risponde alle richieste di autenticazione basata sulla scelta con una selezione casuale tra i tipi di sfida consentiti per il pool di utenti. Il tuo pool di utenti potrebbe restituire una passkey, una password monouso o una password di verifica.
+ Il comportamento della conferma dell'account Amazon Cognito e del recupero della password APIs si alterna tra la restituzione di una risposta che indica che un codice è stato inviato a un supporto di consegna simulato e la restituzione di un errore. `InvalidParameterException`

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
<a name="cognito-user-pool-managing-errors-user-auth"></a>

È possibile configurare le risposte di errore in termini di nome utente-password e autenticazione Secure Remote Password (SRP). Puoi anche personalizzare gli errori restituiti con un'autenticazione personalizzata. L'autenticazione basata sulla scelta non è influenzata dalla configurazione. `PreventUserExistenceErrors`Dettagli sulla divulgazione dell'esistenza degli utenti nei flussi di autenticazione

**Autenticazione basata sulla scelta**  
Nel flusso di `USER_AUTH` autenticazione basato sulla scelta, Amazon Cognito pone una sfida rispetto ai principali fattori di autenticazione disponibili, a seconda della configurazione del pool di utenti e degli attributi degli utenti. Questo flusso di autenticazione può restituire problemi relativi a password, password remota sicura (SRP), WebAuthn (passkey), password monouso (OTP) per SMS o e-mail. Con `PreventUserExistenceErrors` active, Amazon Cognito sfida gli utenti inesistenti a completare una o più delle forme di autenticazione disponibili. Se è `PreventUserExistenceErrors` inattivo, Amazon Cognito restituisce `UserNotFound` un'eccezione.

**Autenticazione con nome utente e password**  
I flussi `ADMIN_USER_PASSWORD_AUTH` di autenticazione e `USER_PASSWORD_AUTH` il `PASSWORD` flusso di `USER_AUTH` ritorno a `NotAuthorizedException` con il messaggio `Incorrect username or password` quando `PreventUserExistenceErrors` è attivo. Quando `PreventUserExistenceErrors` è inattivo, questi flussi ritornano`UserNotFoundException`.

**Autenticazione basata su password remota protetta (SRP)**  
Come procedura consigliata, implementa solo `PreventUserExistenceErrors` con `USER_SRP_AUTH` o con il `PASSWORD_SRP` flusso di pool di `USER_AUTH` utenti interni senza gli attributi di indirizzo e-mail, numero di telefono o [alias](user-pool-settings-attributes.md#user-pool-settings-aliases) del nome utente preferito. Gli utenti con attributi di alias potrebbero non essere soggetti alla soppressione dell'esistenza degli utenti nel flusso di autenticazione SRP. I flussi di autenticazione nome utente e password e la relativa `USER_AUTH` `PASSWORD` sfida eliminano `ADMIN_USER_PASSWORD_AUTH` completamente `USER_PASSWORD_AUTH` l'esistenza degli utenti dagli attributi degli alias.  
[Quando qualcuno tenta l'accesso SRP con un nome utente sconosciuto al client dell'app, Amazon Cognito restituisce una risposta simulata nel primo passaggio, come descritto nella RFC 5054.](https://tools.ietf.org/html/rfc5054#section-2.5.1.3) Amazon Cognito restituisce lo stesso codice e un ID utente interno in formato [UUID](cognito-terms.md#terms-uuid) per la stessa combinazione di nome utente e pool di utenti. Quando si invia una richiesta API `RespondToAuthChallenge` con verifica della password, Amazon Cognito restituisce un errore `NotAuthorizedException` generico quando il nome utente o la password non sono corretti. Per ulteriori informazioni sull'implementazione dell'autenticazione SRP, consulta. [Accedi con password persistenti e payload sicuro](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp)  
[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.](cognito-terms.md#terms-uuid)

**Sfida di autenticazione personalizzata Trigger Lambda**  
Amazon Cognito richiama la [sfida di autenticazione personalizzata che Lambda attiva](user-pool-lambda-challenge.md) quando gli utenti tentano di accedere con il flusso di `CUSTOM_AUTH` autenticazione, ma il loro nome utente non viene trovato. L'evento di input include un parametro booleano denominato `UserNotFound` con un valore per ogni utente inesistente. `true` Questo parametro viene visualizzato negli eventi di richiesta che il pool di utenti invia alle funzioni Lambda di creazione, definizione e verifica dell'autenticazione che costituiscono l'architettura di autenticazione personalizzata. Quando esamini questo indicatore nella logica della tua funzione Lambda, puoi simulare sfide di autenticazione personalizzate per un utente che non esiste.

**Trigger Lambda di pre-autenticazione**  
Amazon Cognito richiama il [trigger di pre-autenticazione](user-pool-lambda-pre-authentication.md) quando gli utenti tentano di accedere ma il loro nome utente non viene trovato. L'evento di input include un `UserNotFound` parametro con un valore pari a `true` per ogni utente inesistente.

L'elenco seguente descrive l'effetto della creazione `PreventUserExistenceErrors` di account utente.Dettagli sulla divulgazione dell'esistenza degli utenti nei flussi di creazione degli utenti

**SignUp**  
L'`SignUp`operazione ritorna sempre `UsernameExistsException` 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](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Per un esempio di come Amazon Cognito può impedire l'uso delle richieste API `SignUp` per scoprire gli utenti del pool di utenti in uso, consulta [Prevenzione degli errori `UsernameExistsException` relativi a indirizzi e-mail e numeri di telefono durante la registrazione](#cognito-user-pool-managing-errors-prevent-userexistence-errors).

**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`. Per ulteriori informazioni, consulta [Necessità degli utenti importati di ripristinare le password](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

**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 [Importazione di utenti con un trigger Lambda per la migrazione di utenti](cognito-user-pools-import-using-lambda.md). 

### Prevenzione degli errori `UsernameExistsException` relativi a indirizzi e-mail e numeri di telefono durante la registrazione
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

Nell'esempio seguente viene illustrato come impedire che indirizzi e-mail e numeri di telefono duplicati generino errori `UsernameExistsException` in risposta alle richieste API `SignUp`, durante la configurazione di attributi alias nel pool di utenti. È 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](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases).

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.

   ** AWS CLI Comando di esempio**

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

   **Esempio di risposta**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. 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
   ```

1. 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"
   ```

   **Esempio di risposta**

   ```
   {
       "UserConfirmed": false, 
       "UserSub": "<new subId>", 
       "CodeDeliveryDetails": {
           "AttributeName": "email", 
           "Destination": "j****@e****", 
           "DeliveryMedium": "EMAIL"
       }
   }
   ```

1. 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
   ```

   **Esempio di risposta**

   ```
   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 dell'API `SignUp` pubblica 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"
```

**Esempio di risposta**

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

## Operazioni di ripristino della password
<a name="cognito-user-pool-managing-errors-password-reset"></a>

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
<a name="cognito-user-pool-managing-errors-confirmation"></a>

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`. 