Gestion des réponses d'erreur - Amazon Cognito

Gestion des réponses d'erreur

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 liées à l'authentification, à la confirmation et à la récupération de mot de passe. 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 activez les réponses d'erreur personnalisées, les API d'authentification Amazon Cognito 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. Les API de confirmation de compte et de récupération de mot de passe Amazon Cognito renvoient une réponse indiquant qu'un code a été envoyé à un mode de communication simulé. La réponse d'erreur fonctionne quand l'état est ENABLED et que l'utilisateur n'existe pas. Voici les comportements détaillés des opérations Amazon Cognito quand PreventUserExistenceErrors est défini sur ENABLED :

Opérations d'authentification d'utilisateur

Vous pouvez utiliser l'une ou l'autre méthode de flux d'authentification avec les opérations suivantes.

  • AdminInitiateAuth

  • AdminRespondToAuthChallenge

  • InitiateAuth

  • RespondToAuthChallenge

Authentification basée sur le nom et le mot de passe d'utilisateur

Dans les flux d'authentification pour ADMIN_USER_PASSWORD_AUTH et USER_PASSWORD_AUTH, le nom d'utilisateur et le mot de passe renvoient une réponse avec un seul appel de InitiateAuth. Amazon Cognito renvoie une erreur NotAuthorizedException générique indiquant que le nom d'utilisateur ou le mot de passe sont incorrects.

Authentification basée sur un mot de passe distant sécurisé (Secure Remote Password, SRP)

Dans le flux d'authentification USER_SRP_AUTH, à la première étape, Amazon Cognito reçoit un nom d'utilisateur et un paramètre SRP « A ». En réponse, Amazon Cognito renvoie un paramètre SRP « B » et « salt » pour l'utilisateur conformément au protocole SRP. Si un utilisateur n'est pas trouvé, Amazon Cognito renvoie une réponse simulée lors de la première étape, comme décrit dans RFC 5054. Amazon Cognito renvoie les mêmes « salt » et identifiant d'utilisateur interne au format UUID (identifiant universel unique) pour la même combinaison de nom d'utilisateur et de groupe d'utilisateurs. Lors de l'exécution de l'opération suivante de preuve de mot de passe RespondToAuthChallenge, Amazon Cognito renvoie une erreur NotAuthorizedException générique indiquant que le nom d'utilisateur ou le mot de passe étaient incorrects.

Note

Vous pouvez utiliser UsernamePassword pour simuler une réponse générique si vous utilisez des alias basés sur une vérification, et que le format de nom d'utilisateur immuable n'est pas un UUID.

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 en entrée et les paramètres de vérification du groupe 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.

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.

SignUp

L'opération SignUp retourne UsernameExistsException quand un nom d'utilisateur est déjà pris. Pour éviter l'erreur UsernameExistsException pour le courriel ou le numéro de téléphone pendant l’opération SignUp, vous pouvez utiliser des alias basés sur la vérification. Pour plus d'informations, consultez le AliasAttributes Guide de référence de l'API Amazon Cognito. Pour plus d'informations sur les alias, consultez Présentation des alias.

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.

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.

Déclencheur Lambda de stimulation d'authentification personnalisée

Si vous utilisez Déclencheur Lambda de stimulation d'authentification personnalisée et 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 Lambda DefineAuthChallenge, VerifyAuthChallenge et CreateAuthChallenge. 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 renvoie UserNotFound.