Я пытаюсь реализовать собственный поток аутентификации, используя Amazon Cognito и лямбда-сценарии. Настраиваемая аутентификация запускается, но массив сеанса запроса пуст вместо вызова триггера SRP_a, как это происходит с использованием javascript sdk. Если вызов SRP_a не происходит, он не выполняет вызов PASSWORD_VERIFIER, который необходим для аутентификации имени пользователя / пароля. Примечание: пользовательская часть аутентификации происходит после аутентификации имени пользователя / пароля.
Документация Cognito гласит, что этот процесс возможен на javascript, iOS и Android, но содержит только примеры на javascript. Ниже я включил код Android, который выполняет аутентификацию.
CognitoHelper cognitoHelper = CognitoHelper.getInstance(getApplicationContext());
username = loginView.getUsername();
//Must use toLowerCase to make the username not case sensitive
cognitoHelper.setUser(username.toLowerCase());
password = loginView.getPassword();
AuthFlowType authFlowType = AuthFlowType.fromValue(String.valueOf(AuthFlowType.CUSTOM_AUTH));
HashMap<String, String> authenticationParameters = new HashMap<>();
authenticationParameters.put(CognitoServiceConstants.AUTH_PARAM_PASSWORD,password);
authenticationParameters.put(CognitoServiceConstants.AUTH_PARAM_USERNAME, username);
SRP_aHelper srp_aHelper = new SRP_aHelper(cognitoHelper.getUserPoolID());
authenticationParameters.put(CognitoServiceConstants.AUTH_PARAM_SRP_A,srp_aHelper.getA().toString(16));
InitiateAuthRequest initiateAuthRequest = new InitiateAuthRequest();
initiateAuthRequest.setClientId(cognitoHelper.getClientID());
initiateAuthRequest.setAuthFlow(authFlowType);
initiateAuthRequest.setAuthParameters(authenticationParameters);
CognitoUser cognitoUser = cognitoHelper.getUserPool().getUser(username);
thisDevice = cognitoUser.thisDevice();
//getCIPClient returns a AmazonCognitoIdentityProviderClient
InitiateAuthResult initiateAuthResult = cognitoHelper.getCipClient().initiateAuth(initiateAuthRequest);