Revisión de One Time Password (OTP) Step Up Authentication
Este flujo de autenticación incluye los siguientes componentes para admitir la autenticación de refuerzo (step-up auth), utilizando contraseñas de un solo uso (OTP) enviadas por SMS:
- Funciones AWS Lambda: Implementan el flujo de autenticación personalizada de Amazon Cognito, utilizando Amazon Simple Notification Service (SNS) para enviar los SMS con una contraseña de un solo uso (OTP) a los usuarios.
- Verificación JWT: La biblioteca aws-jwt-verify se utiliza para verificar que se trata efectivamente de un caso de autenticación de refuerzo, es decir, el usuario debe poseer tokens JWT válidos.
- Bibliotecas de Front End: Incluyen funciones para trabajar con este flujo de autenticación personalizada, que pueden utilizarse en aplicaciones Web, React y React Native.
Vamos a hacer clic en "Manage Authenticators" y luego ingresaremos cualquier número en el campo "Consent Id" para finalmente hacer clic en el botón "SMS OTP".
Luego de lo anterior, se genera la siguiente petición:
La petición POST enviada a cognito-idp.us-east-1.amazonaws.com utiliza el método RespondToAuthChallenge del servicio Amazon Cognito Identity Provider. Los puntos clave de la petición incluyen:
- Challenge Name y Responses: El ChallengeName es CUSTOM_CHALLENGE, y en los ChallengeResponses se incluye un campo ANSWER con un valor dummy, y el USERNAME del usuario que intenta autenticarse.
- Identificación del Cliente: El ClientId identifica la aplicación cliente que realiza la solicitud.
- Metadatos de Cliente: El campo ClientMetadata incluye un consent_id y especifica que el método de inicio de sesión es SMS_OTP_STEPUP.
La respuesta del servidor es un HTTP 200 OK, lo que indica que la petición fue procesada exitosamente. Los puntos clave de la respuesta incluyen:
- Challenge Name y Parameters: El ChallengeName sigue siendo CUSTOM_CHALLENGE. En ChallengeParameters, se incluye el phoneNumber parcialmente enmascarado del usuario (+*******7646), lo que confirma que se está utilizando el método de autenticación por SMS OTP.
- Nueva Sesión: Se proporciona un nuevo valor de Session, que será utilizado para las siguientes interacciones en el flujo de autenticación.