

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Gestion des réponses aux erreurs liées à l'existence des utilisateurs
<a name="cognito-user-pool-managing-errors"></a>

Amazon Cognito prend en charge la personnalisation des réponses d'erreur renvoyées par les groupes d'utilisateurs. Des réponses d'erreur personnalisées sont disponibles pour les opérations de création et d'authentification, de récupération de mot de passe et de confirmation d'utilisateurs.

Utilisez le paramètre `PreventUserExistenceErrors` d'un client d'application de groupe d'utilisateurs pour activer ou désactiver les erreurs liées à l'existence de l'utilisateur. Lorsque vous créez un nouveau client d'application avec l'API des groupes d'utilisateurs Amazon Cognito, elle `PreventUserExistenceErrors` est `LEGACY` ou est désactivée par défaut. Dans la console Amazon Cognito, l'option **Empêcher les erreurs liées à l'existence des utilisateurs** (paramètre `ENABLED` pour`PreventUserExistenceErrors`) est sélectionnée par défaut. Pour mettre à jour votre `PreventUserExistenceErrors` configuration, effectuez l'une des opérations suivantes :
+ Modifiez la valeur comprise `PreventUserExistenceErrors` entre `ENABLED` et `LEGACY` dans une demande d'[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.
+ Modifiez le client de votre application dans la console Amazon Cognito et modifiez l'état de **Empêcher les erreurs d'existence des utilisateurs** entre sélectionné (`ENABLED`) et désélectionné (). `LEGACY`

Lorsque cette propriété a une valeur égale à`LEGACY`, le client de votre application renvoie une réponse `UserNotFoundException` d'erreur lorsqu'un utilisateur tente de se connecter avec un nom d'utilisateur qui n'existe pas dans votre groupe d'utilisateurs.

Lorsque cette propriété a une valeur de`ENABLED`, le client de votre application ne divulgue pas l'inexistence d'un compte utilisateur dans votre groupe d'utilisateurs avec une `UserNotFoundException` erreur. Une `PreventUserExistenceErrors` configuration de produit `ENABLED` les effets suivants lorsque vous soumettez une demande pour un nom d'utilisateur qui n'existe pas :
+ Amazon Cognito fournit des informations non spécifiques aux demandes d'API lorsque sa réponse pourrait sinon révéler l'existence d'un utilisateur valide.
+ Amazon Cognito renvoie une réponse d'échec d'authentification générique aux demandes de mot de passe oublié et aux demandes d'authentification avec des flux d'authentification, à l'*exception* de l'[authentification basée sur le choix](authentication-flows-selection-sdk.md#authentication-flows-selection-choice) ()`USER_AUTH`, par exemple, ou. `USER_SRP_AUTH` `CUSTOM_AUTH` La réponse d'erreur vous indique que le nom d'utilisateur ou le mot de passe est incorrect.
+ Amazon Cognito répond aux demandes d'authentification basée sur les choix en effectuant une sélection aléatoire parmi les types de défis autorisés pour le groupe d'utilisateurs. Votre groupe d'utilisateurs peut renvoyer une clé d'accès, un mot de passe à usage unique ou un défi de mot de passe.
+ Le comportement de confirmation du compte Amazon Cognito et de récupération du mot de passe APIs alterne entre le renvoi d'une réponse indiquant qu'un code a été envoyé à un support de diffusion simulé et le renvoi d'une erreur. `InvalidParameterException`

Les informations suivantes détaillent les comportements des opérations du groupe d'utilisateurs lorsque `PreventUserExistenceErrors` ce paramètre est défini sur`ENABLED`.

## Opérations d'authentification et de création d'utilisateurs
<a name="cognito-user-pool-managing-errors-user-auth"></a>

Vous pouvez configurer les réponses aux erreurs dans l'authentification par nom d'utilisateur-mot de passe et par mot de passe sécurisé (SRP). Vous pouvez également personnaliser les erreurs que vous renvoyez grâce à une authentification personnalisée. L'authentification basée sur les choix n'est pas affectée par votre `PreventUserExistenceErrors` configuration.Informations relatives à l'existence des utilisateurs divulguées dans les flux d'authentification

**Authentification basée sur les choix**  
Dans le flux d'authentification `USER_AUTH` basé sur les choix, Amazon Cognito renvoie un défi à partir des principaux facteurs d'authentification disponibles, en fonction de la configuration de votre groupe d'utilisateurs et des attributs des utilisateurs. Ce flux d'authentification peut renvoyer un mot de passe, un mot de passe distant sécurisé (SRP), WebAuthn (clé d'accès), un mot de passe à usage unique (OTP) par SMS ou des défis OTP par e-mail. Lorsque cette option est `PreventUserExistenceErrors` activée, Amazon Cognito met les utilisateurs inexistants au défi de compléter une ou plusieurs des formes d'authentification disponibles. Lorsque cette option est `PreventUserExistenceErrors` inactive, Amazon Cognito renvoie une `UserNotFound` exception.

**Authentification par nom d’utilisateur et mot de passe**  
Les flux d'authentification `ADMIN_USER_PASSWORD_AUTH``USER_PASSWORD_AUTH`, et le `PASSWORD` flux de `USER_AUTH` retour `NotAuthorizedException` avec le message `Incorrect username or password` lorsqu'il `PreventUserExistenceErrors` est actif. Lorsqu'il `PreventUserExistenceErrors` est inactif, ces flux reviennent`UserNotFoundException`.

**Authentification basée sur un mot de passe distant sécurisé (Secure Remote Password, SRP)**  
Il est recommandé de n'implémenter `PreventUserExistenceErrors` que le flux `USER_SRP_AUTH` ou le `PASSWORD_SRP` flux de `USER_AUTH` groupes d'utilisateurs sans adresse e-mail, numéro de téléphone ou [alias de nom d'utilisateur préféré](user-pool-settings-attributes.md#user-pool-settings-aliases). Les utilisateurs dotés d'attributs d'alias peuvent ne pas être soumis à la suppression de leur existence dans le flux d'authentification SRP. Les flux d'authentification par nom d'utilisateur et mot de passe (`ADMIN_USER_PASSWORD_AUTH`et le `USER_AUTH` `PASSWORD` défi) suppriment complètement l'existence des utilisateurs à partir des attributs d'alias. `USER_PASSWORD_AUTH`  
[Lorsqu'un utilisateur tente de se connecter au SRP avec un nom d'utilisateur inconnu de votre client d'application, Amazon Cognito renvoie une réponse simulée lors de la première étape, comme décrit dans la RFC 5054.](https://tools.ietf.org/html/rfc5054#section-2.5.1.3) Amazon Cognito renvoie le même sel et un ID utilisateur interne au format [UUID](cognito-terms.md#terms-uuid) pour la même combinaison de nom d'utilisateur et de groupe d'utilisateurs. Lorsque vous envoyez une demande d'API `RespondToAuthChallenge` avec preuve de mot de passe, Amazon Cognito renvoie une erreur `NotAuthorizedException` générique lorsque le nom d'utilisateur ou le mot de passe sont incorrects. Pour plus d'informations sur la mise en œuvre de l'authentification SRP, consultez[Connectez-vous avec des mots de passe persistants et une charge utile sécurisée](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-srp).  
[Vous pouvez simuler une réponse générique avec authentification par nom d'utilisateur et mot de passe si vous utilisez des attributs d'alias basés sur la vérification et si le nom d'utilisateur immuable n'est pas formaté sous forme d'UUID.](cognito-terms.md#terms-uuid)

**Défi d'authentification personnalisé \$1 Déclencheur Lambda**  
Amazon Cognito lance le [défi d'authentification personnalisé que Lambda déclenche](user-pool-lambda-challenge.md) lorsque les utilisateurs tentent de se connecter via le flux d'`CUSTOM_AUTH`authentification, mais que leur nom d'utilisateur n'est pas trouvé. L'événement d'entrée inclut un paramètre booléen nommé `UserNotFound` avec la valeur `true` pour tout utilisateur inexistant. Ce paramètre apparaît dans les événements de demande que votre groupe d'utilisateurs envoie aux fonctions Lambda du défi de création, de définition et de vérification de l'authentification qui constituent l'architecture d'authentification personnalisée. Lorsque vous examinez cet indicateur dans la logique de votre fonction Lambda, vous pouvez simuler des défis d'authentification personnalisés pour un utilisateur qui n'existe pas.

**Déclencheur Lambda avant authentification**  
Amazon Cognito invoque le [déclencheur de pré-authentification](user-pool-lambda-pre-authentication.md) lorsque les utilisateurs tentent de se connecter mais que leur nom d'utilisateur est introuvable. L'événement d'entrée inclut un `UserNotFound` paramètre dont la valeur est `true` pour tout utilisateur inexistant.

La liste suivante décrit l'effet de la création d'un compte utilisateur `PreventUserExistenceErrors` sur celui-ci.Informations relatives à la divulgation de l'existence des utilisateurs dans les flux de création d'utilisateurs

**SignUp**  
L'`SignUp`opération revient toujours `UsernameExistsException` lorsqu'un nom d'utilisateur est déjà utilisé. Si vous ne voulez pas qu'Amazon Cognito renvoie une erreur `UsernameExistsException` pour les adresses e-mail et les numéros de téléphone au moment où vous inscrivez des utilisateurs dans votre application, utilisez des attributs d'alias basés sur la vérification. Pour en savoir plus sur les alias, consultez la section [Personnalisation des attributs de connexion](user-pool-settings-attributes.md#user-pool-settings-aliases).  
Pour voir un exemple de la façon dont Amazon Cognito peut empêcher l'utilisation de demandes d'API `SignUp` pour découvrir les utilisateurs de votre groupe d'utilisateurs, consultez [Prévention des erreurs `UsernameExistsException` pour les adresses e-mail et les numéros de téléphone au moment de l'inscription](#cognito-user-pool-managing-errors-prevent-userexistence-errors).

**Utilisateurs importés**  
Si l'option `PreventUserExistenceErrors` est activée, lors de l'authentification d'utilisateurs importés, une erreur `NotAuthorizedException` générique est renvoyée, indiquant que le nom d'utilisateur ou le mot de passe étaient incorrects au lieu de renvoyer `PasswordResetRequiredException`. Pour plus d’informations, consultez [Obligation pour les utilisateurs importés de réinitialiser leur mot de passe](cognito-user-pools-using-import-tool.md#cognito-user-pools-using-import-tool-password-reset).

**Déclencheur Lambda de migration d'utilisateur**  
Amazon Cognito renvoie une réponse simulée pour des utilisateurs inexistants quand une réponse vide a été définie dans le contexte d'événement d'origine par le déclencheur Lambda. Pour de plus amples informations, veuillez consulter [Importation d'utilisateurs avec un déclencheur Lambda de migration d'utilisateur](cognito-user-pools-import-using-lambda.md). 

### Prévention des erreurs `UsernameExistsException` pour les adresses e-mail et les numéros de téléphone au moment de l'inscription
<a name="cognito-user-pool-managing-errors-prevent-userexistence-errors"></a>

L'exemple suivant montre comment, au moment de configurer des attributs d'alias dans votre groupe d'utilisateurs, vous pouvez empêcher que des adresses e-mail et des numéros de téléphone en double ne génèrent des erreurs `UsernameExistsException` en réponse à des demandes d'API `SignUp`. Vous devez avoir créé votre groupe d'utilisateurs avec l'adresse e-mail ou le numéro de téléphone en tant qu'attribut d'alias. Pour en savoir plus, consultez la section *Personnalisation des attributs de connexion* du document [Attributs de groupe d'utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html#user-pool-settings-aliases).

1. Jie s'inscrit pour obtenir un nouveau nom d'utilisateur et fournit également l'adresse e-mail `jie@example.com`. Amazon Cognito envoie un code à son adresse e-mail.

   **Exemple de AWS CLI commande**

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

   **Exemple de réponse**

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

1. Jie fournit le code qui lui a été envoyé pour confirmer que l'adresse e-mail lui appartient. Cela termine son inscription en tant qu'utilisateur.

   **Exemple de AWS CLI commande**

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

1. Shirley inscrit un nouveau compte d'utilisateur et fournit l'adresse e-mail `jie@example.com`. Amazon Cognito ne renvoie pas d'erreur `UsernameExistsException` et envoie un code de confirmation à l'adresse e-mail de Jie.

   **Exemple de AWS CLI commande**

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

   **Exemple de réponse**

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

1. Dans un autre scénario, Shirley est propriétaire de `jie@example.com`. Shirley récupère le code qu'Amazon Cognito a envoyé à l'adresse e-mail de Jie et tente de confirmer le compte.

   **Exemple de AWS CLI commande**

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

   **Exemple de réponse**

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

Amazon Cognito ne renvoie pas d'erreur à la demande `aws cognito-idp sign-up` de Shirley, bien que `jie@example.com` soit attribué à un utilisateur existant. Shirley doit prouver qu'elle est propriétaire de l'adresse e-mail avant qu'Amazon Cognito ne renvoie une réponse d'erreur. Dans un groupe d'utilisateurs doté d'attributs d'alias, ce comportement empêche l'utilisation de l'API `SignUp` publique pour vérifier l'existence d'un utilisateur à partir d'une adresse e-mail ou d'un numéro de téléphone donnés.

Ce comportement est différent de la réponse qu'Amazon Cognito renvoie à une demande `SignUp` associée à un nom d'utilisateur existant, comme le montre l'exemple suivant. Bien que cette réponse fasse découvrir à Shirley qu'il existe déjà un utilisateur doté du nom d'utilisateur `jie`, elle ne lui apprend rien concernant les adresses e-mail et les numéros de téléphone associés à cet utilisateur.

**Exemple de commande d'interface de ligne de commande**

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

**Exemple de réponse**

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

## Opérations de réinitialisation de mot de passe
<a name="cognito-user-pool-managing-errors-password-reset"></a>

Amazon Cognito renvoie les réponses suivantes aux opérations de réinitialisation du mot de passe utilisateur lorsque vous empêchez les erreurs liées à l'existence d'un utilisateur.

**ForgotPassword**  
Quand un utilisateur n'est pas trouvé, est désactivé ou ne dispose d’aucun mécanisme de communication vérifié pour récupérer son mot de passe, Amazon Cognito renvoie `CodeDeliveryDetails` avec un mode de communication simulé pour un utilisateur. Le mode de communication simulé est déterminé par le format du nom d'utilisateur d'entrée et les paramètres de vérification du pool d'utilisateurs.

**ConfirmForgotPassword**  
Amazon Cognito renvoie l'erreur `CodeMismatchException` pour des utilisateurs inexistants ou désactivés. Si aucun code n'est demandé lors de l'utilisation de `ForgotPassword`, Amazon Cognito renvoie l'erreur `ExpiredCodeException`.

## Opérations de confirmation
<a name="cognito-user-pool-managing-errors-confirmation"></a>

Amazon Cognito renvoie les réponses suivantes aux opérations de confirmation et de vérification de l'utilisateur lorsque vous empêchez les erreurs liées à l'existence d'un utilisateur.

**ResendConfirmationCode**  
Amazon Cognito renvoie `CodeDeliveryDetails` pour un utilisateur désactivé ou inexistant. Amazon Cognito envoie un code de confirmation au courriel ou au numéro de téléphone de l'utilisateur existant.

**ConfirmSignUp**  
 `ExpiredCodeException` renvoie si un code a expiré. Amazon Cognito retourne `NotAuthorizedException` quand un utilisateur n'est pas autorisé. Si le code ne correspond pas à ce que le serveur attend, Amazon Cognito renvoie `CodeMismatchException`. 