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
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 les groupes d'utilisateurs Amazon Cognito APILEGACY
, PreventUserExistenceErrors
il est ou est désactivé par défaut. Dans la console Amazon Cognito, l'option Empêcher les erreurs liées à l'existence des utilisateurs (paramètre ENABLED
pourPreventUserExistenceErrors
) 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
entreENABLED
etLEGACY
dans un UpdateUserPoolClientAPIdemande. -
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 deENABLED
, 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 ENABLED
produit les effets suivants :
-
Amazon Cognito fournit des informations non spécifiques aux API demandes lorsque sa réponse pourrait révéler l'existence d'un utilisateur valide.
-
La connexion à Amazon Cognito et le mot de passe oublié APIs renvoient une réponse d'échec d'authentification générique. La réponse d'erreur vous indique que le nom d'utilisateur ou le mot de passe est incorrect.
-
La confirmation du compte Amazon Cognito et la récupération du mot de passe APIs renvoient une réponse indiquant qu'un code a été envoyé à un support de diffusion simulé, au lieu d'une représentation partielle des coordonnées d'un utilisateur.
Les informations suivantes détaillent les comportements des opérations du groupe d'utilisateurs lorsque PreventUserExistenceErrors
ce paramètre est défini surENABLED
.
Opérations d'authentification et de création d'utilisateurs
Vous pouvez configurer les réponses aux erreurs lors de l'authentification par nom d'utilisateur-mot de passe et par mot de passe distant sécurisé () SRP. Vous pouvez également personnaliser les erreurs que vous renvoyez grâce à une authentification personnalisée. Les opérations APIs d'authentification suivantes sont effectuées :
-
AdminInitiateAuth
-
AdminRespondToAuthChallenge
-
InitiateAuth
-
RespondToAuthChallenge
La liste suivante montre comment personnaliser les réponses d'erreur dans les opérations d'authentification des utilisateurs.
- Authentification par nom d'utilisateur et mot de passe
-
Pour connecter un utilisateur avec
ADMIN_USER_PASSWORD_AUTH
etUSER_PASSWORD_AUTH
, incluez le nom d'utilisateur et le mot de passe dans uneInitiateAuth
API demandeAdminInitiateAuth
ou. Amazon Cognito renvoie une erreurNotAuthorizedException
générique lorsque le nom d'utilisateur ou le mot de passe sont incorrects. - Authentification basée sur un mot de passe à distance sécurisé (SRP)
-
Pour connecter un utilisateur
USER_SRP_AUTH
, incluez un nom d'utilisateur et unSRP_A
paramètre dans uneInitiateAuth
API demandeAdminInitiateAuth
or. En réponse, Amazon Cognito renvoie du selSRP_B
à l'utilisateur. Lorsqu'aucun utilisateur n'est trouvé, Amazon Cognito renvoie une réponse simulée lors de la première étape, comme décrit dans la section 5054. RFCAmazon Cognito renvoie le même sel et un identifiant utilisateur interne UUIDau format correspondant à la même combinaison nom d'utilisateur et groupe d'utilisateurs. Lorsque vous envoyez une RespondToAuthChallenge
API demande avec une preuve de mot de passe, Amazon Cognito renvoie uneNotAuthorizedException
erreur générique lorsque le nom d'utilisateur ou le mot de passe est incorrect.Note
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é comme un. UUID
- Déclencheur Lambda de stimulation d'authentification personnalisée
-
Si vous utilisez le déclencheur Lambda de stimulation d'authentification personnalisée et que vous activez les réponses d'erreur,
LambdaChallenge
renvoie un paramètre booléen nomméUserNotFound
. Il est ensuite passé dans la demande de déclencheurs LambdaDefineAuthChallenge
,VerifyAuthChallenge
etCreateAuthChallenge
. Vous pouvez utiliser ce déclencheur pour simuler des stimulations d'autorisation personnalisée pour un utilisateur inexistant. Si vous appelez le déclencheur Lambda d'authentification préalable pour un utilisateur inexistant, Amazon Cognito renvoieUserNotFound
.
La liste suivante montre comment personnaliser les réponses d'erreur lors des opérations de création d'utilisateurs.
- SignUp
-
L'
SignUp
opération revient toujoursUsernameExistsException
lorsqu'un nom d'utilisateur est déjà utilisé. Si vous ne voulez pas qu'Amazon Cognito renvoie une erreurUsernameExistsException
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.Pour un exemple de la manière dont Amazon Cognito peut empêcher l'utilisation de
SignUp
API demandes visant à découvrir des 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 - Utilisateurs importés
-
Si l'option
PreventUserExistenceErrors
est activée, lors de l'authentification d'utilisateurs importés, une erreurNotAuthorizedException
générique est renvoyée, indiquant que le nom d'utilisateur ou le mot de passe étaient incorrects au lieu de renvoyerPasswordResetRequiredException
. Pour plus d'informations, consultez Obligation pour les utilisateurs importés de réinitialiser leur mot de passe. - 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 plus d'informations, consultez Déclencheur Lambda de migration d'utilisateur.
Prévention des erreurs UsernameExistsException
pour les adresses e-mail et les numéros de téléphone au moment de l'inscription
L'exemple suivant montre comment, lorsque vous configurez des attributs d'alias dans votre groupe d'utilisateurs, vous pouvez empêcher les adresses e-mail et les numéros de téléphone dupliqués de générer UsernameExistsException
des erreurs en réponse aux SignUp
API demandes. 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.
-
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" } } -
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
-
Shirley inscrit un nouveau compte d'utilisateur et fournit l'adresse e-mail
jie@example.com
. Amazon Cognito ne renvoie pas d'erreurUsernameExistsException
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" } } -
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 du public SignUp
API pour vérifier si un utilisateur existe avec une adresse e-mail ou un numéro de téléphone donné.
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 CLI
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
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 deForgotPassword
, Amazon Cognito renvoie l'erreurExpiredCodeException
.
Opérations de confirmation
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 retourneNotAuthorizedException
quand un utilisateur n'est pas autorisé. Si le code ne correspond pas à ce que le serveur attend, Amazon Cognito renvoieCodeMismatchException
.