Estoy tratando de hacer un flujo de autenticación personalizado usando AWS Cognito para poder enviar códigos MFA por correo electrónico en lugar de hacerlo a través de los disparadores de cognito. Estoy usando el método initialAuth() para hacer esto, lo cual es correcto de acuerdo con la documentación;
https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityServiceProvider.html#initiateAuth -propiedad
Mi carga útil parece ser válida, pero cuando intento iniciar sesión con un usuario, aparece el error 't.getauthparameters is not a function'
He echado un vistazo a otras publicaciones de stackoverflow pero nada ayuda
¿Alguna idea de lo que está yendo mal?
Este es un fragmento de mi código a continuación:
const payload = { AuthFlow: 'CUSTOM_AUTH', ClientId: 'my client id', AuthParameters: { USERNAME: $('input[name=username]').val(), PASSWORD: $('input[name=password]').val(), CHALLENGE_NAME: 'SRP_A' } }; cognitoUser.initiateAuth(payload, { onSuccess: function(result) { // User authentication was successful }, onFailure: function(err) { // User authentication was not successful }, customChallenge: function(challengeParameters) { // User authentication depends on challenge response var verificationCode = prompt('Please input OTP code' ,''); cognitoUser.sendCustomChallengeAnswer(verificationCode, this); }, });Así que terminé descubriendo que iniciar Auth () no es el método correcto para usar.
El método correcto para usar es cognitoUser.authenticateUser() (ya que estoy usando la autenticación basada en SRP y luego agrego un desafío personalizado). Mi código actualizado se encuentra a continuación.
Este fue un ejemplo similar que seguí para ayudarme a encontrar la respuesta.
No pude encontrar mucho en línea para hacerlo solo con el SDK de identidad de Amazon Cognito, así que espero que esto sea útil para cualquiera que haga lo mismo.
AWSCognito.config.region = 'region'; var poolData = { UserPoolId : 'user pool id', ClientId : 'client id' }; var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData); var userData = { Username: $('input[name=username]').val(), Pool: userPool, }; var authenticationData = { Username : $('input[name=username]').val(), Password : $('input[name=password]').val(), }; var authenticationDetails = new AmazonCognitoIdentity.AuthenticationDetails(authenticationData); var cognitoUser = new AmazonCognitoIdentity.CognitoUser(userData); cognitoUser.setAuthenticationFlowType('CUSTOM_AUTH'); cognitoUser.authenticateUser(authenticationDetails, { onSuccess: function(result) { console.log('success'); var resultStr = 'Login Successful'; console.log(resultStr); $('#resultsSignIn').html(resultStr); }, onFailure: function(err) { alert(err); }, customChallenge: function(challengeParameters) { // User authentication depends on challenge response var verificationCode = prompt('Please input OTP code' ,''); cognitoUser.sendCustomChallengeAnswer(verificationCode, this); }, }); return false;`