Administración de respuestas de error - Amazon Cognito

Administración de respuestas de error

Amazon Cognito es compatible con la personalización de las respuestas de error que devuelven los grupos de usuarios. Las respuestas de error personalizadas están disponibles para las operaciones relacionadas con la autenticación, la confirmación y la recuperación de la contraseña. Utilice la configuración de PreventUserExistenceErrors de un cliente de aplicaciones del grupo de usuarios para habilitar o desactivar errores relacionados con la existencia del usuario.

Cuando habilita respuestas de error personalizadas, las API de autenticación de Amazon Cognito devuelven una respuesta de error de autenticación genérica. Con la respuesta de error, se indica que el nombre de usuario o la contraseña es incorrecto. Las API de confirmación de cuentas y de recuperación de contraseñas de Amazon Cognito devuelven una respuesta en la que se indica que se ha enviado un código a un medio de entrega simulado. La respuesta de error funciona cuando el estado es ENABLED y el usuario no existe. A continuación se muestra el funcionamiento detallado de las operaciones de Amazon Cognito cuando PreventUserExistenceErrors se establece en ENABLED:

Operaciones de autenticación del usuario

Puede utilizar cualquiera de los métodos de flujo de autenticación con las siguientes operaciones.

  • AdminInitiateAuth

  • AdminRespondToAuthChallenge

  • InitiateAuth

  • RespondToAuthChallenge

Autenticación basada en el nombre de usuario y la contraseña

En los flujos de autenticación de ADMIN_USER_PASSWORD_AUTH y USER_PASSWORD_AUTH, el nombre de usuario y la contraseña se devuelven con una sola llamada de InitiateAuth. Amazon Cognito devuelve un error NotAuthorizedException genérico en el que se indica que el nombre de usuario o la contraseña no son correctos.

Autenticación basada en contraseña remota segura (SRP)

En el flujo de autenticación USER_SRP_AUTH, Amazon Cognito recibe un nombre de usuario y el parámetro “A” de SRP en el primer paso. Como respuesta, Amazon Cognito devuelve el parámetro ‘B’ de SRP y la ‘sal’ del usuario en función del protocolo SRP. Cuando no se encuentra ningún usuario, Amazon Cognito devuelve una respuesta simulada en el primer paso, tal y como se describe en RFC 5054. Amazon Cognito devuelve la misma 'sal' y un ID de usuario interno en formato de identificador único universal (UUID) para la misma combinación de nombre de usuario y grupo de usuarios. Cuando se ejecuta la siguiente operación de prueba de contraseña RespondToAuthChallenge, Amazon Cognito devuelve un error NotAuthorizedException genérico en el que se indica que ni el nombre de usuario ni la contraseña fueron correctos.

nota

Puede utilizar UsernamePassword para simular una respuesta genérica si emplea alias basados en verificación y el formato del nombre de usuario inmutable no es un UUID.

ForgotPassword

Cuando un usuario no se encuentra, está desactivado o no dispone de un mecanismo de entrega verificado para recuperar su contraseña, Amazon Cognito siempre devuelve CodeDeliveryDetails con un medio de entrega simulado para un usuario. El formato del nombre de usuario de entrada y la configuración de verificación del grupo de usuarios determinarán el medio de entrega simulado.

ConfirmForgotPassword

Amazon Cognito devuelve el error CodeMismatchException para los usuarios que no existen o que están inhabilitados. Si no se solicita un código al utilizar ForgotPassword, Amazon Cognito devuelve el error ExpiredCodeException.

ResendConfirmationCode

Amazon Cognito devuelve CodeDeliveryDetails para un usuario inhabilitado o que no existe. Amazon Cognito envía un código de confirmación al correo electrónico o al número de teléfono del usuario existente.

ConfirmSignUp

Se devuelve ExpiredCodeException si un código se ha vencido. Amazon Cognito devuelve NotAuthorizedException cuando un usuario no está autorizado. Si el código no coincide con lo que el servidor espera, Amazon Cognito devuelve CodeMismatchException.

SignUp

La operación SignUp devuelve UsernameExistsException cuando ya existe un nombre de usuario. Para evitar el error UsernameExistsException con el correo electrónico o el número de teléfono durante SignUp, puede usar alias basados en verificación. Para obtener más información, consulte la Guía de referencia de las API de Amazon Cognito AliasAttributes. Para obtener más información sobre los alias, consulte Información general de alias.

Usuarios importados

Durante la autenticación de los usuarios importados, si se habilita PreventUserExistenceErrors, se devuelve un error NotAuthorizedException genérico en el que se indica que el nombre de usuario o la contraseña eran incorrectos, en lugar de devolver PasswordResetRequiredException. Para obtener más información, consulte Requisito para que los usuarios importados restablezcan sus contraseñas.

Migración del desencadenador de Lambda del usuario

Amazon Cognito devolverá una respuesta simulada para los usuarios que no existan cuando el desencadenador de Lambda establezca una respuesta vacía en el contexto del evento original. Para obtener más información, consulte Migración del desencadenador de Lambda del usuario.

Desencadenador de Lambda de desafío de autenticación personalizado

Si utiliza un desencadenador de Lambda de desafío de autenticación personalizado y habilita las respuestas de error, LambdaChallenge devuelve un parámetro booleano llamado UserNotFound. A continuación se pasa en la solicitud de los desencadenadores de Lambda DefineAuthChallenge, VerifyAuthChallenge, y CreateAuthChallenge. Puede utilizar este desencadenador a fin de simular desafíos de autenticación personalizados para un usuario que no exista. Si llama al desencadenador de Lambda de autenticación previa para un usuario que no existe, Amazon Cognito devuelve UserNotFound.