Дополнительный пул пользователей AWS Cognito MFA - почему MFA не включен по умолчанию - PullRequest
0 голосов
/ 18 октября 2019



Моя консоль AWS всегда показывает SMS MFA STATUS, отключенный для пользователя, даже если он запрашивает токен MFA при входе через API. Последующие шаги

Я создал пул пользователей через консоль aws с необязательным MFA Я создал пользователя под этим пулом пользователей с помощью подключенного кода API , выполнив вход через api, после вызова NEW_PASSWORD_REQUIRED я получил все токены Я изменил настройки mfa через api , теперь я вошел в систему, и на этот раз он запрашивает код MFA
  1. независимоПри включении или отключении MFA через api моя консоль AWS всегда отображает состояние MFA для этого пользователя как DISABLED.
  2. Еще одна проблема: я хочу установить MFA включенным по умолчанию, после чего пользователь может отключить MFA после первого входа в систему с помощью MFA. Сейчас MFA отключен по умолчанию.
    Мой код для регистрации, как показано ниже
AdminCreateUserRequest cognitoRequest = new AdminCreateUserRequest()
.withUserPoolId(cognitoConfig.getUserPoolId())<br>
// .withUserPoolId("us-east-1_vhXDAMWwN")<br>
.withUsername(signUpRequest.getUsername())<br>
.withUserAttributes(new AttributeType().withName(EMAIL).withValue(signUpRequest.getEmail()),<br>
new AttributeType().withName(NAME).withValue(signUpRequest.getName()),<br>
new AttributeType().withName(FAMILY_NAME).withValue(signUpRequest.getLastname()),<br>
new AttributeType().withName(PHONE_NUMBER).withValue(signUpRequest.getPhoneNumber()),<br>
new AttributeType().withName(EMAIL_VERIFIED).withValue(Boolean.TRUE.toString()))<br>
.withTemporaryPassword(cognitoConfig.getTempPassword())<br>
//uncomment this line to suppress welcome email and sms<br>
//.withMessageAction(MESSAGE_ACTION_SUPPRESS)<br>
.withDesiredDeliveryMediums(DeliveryMediumType.EMAIL, DeliveryMediumType.SMS)<br>
.withForceAliasCreation(Boolean.FALSE);<br>
UserSignUpResponse userSignUpResponse = new UserSignUpResponse();<br>
try {<br>
AdminCreateUserResult createUserResult = cognitoClient.adminCreateUser(cognitoRequest);<br>
UserType cognitoUser = createUserResult.getUser();<br>
if (cognitoUser != null && cognitoUser.getUserStatus().equals(FORCE_CHANGE_PASSWORD)) {<br>
//save / update user into rex db<br>
populateAndSaveUser(signUpRequest);<br>
userSignUpResponse.setName(cognitoUser.getUsername());<br>
userSignUpResponse.setResult(SUCCESS);<br>
userSignUpResponse.setStatus(FORCE_CHANGE_PASSWORD);<br>
}<br>
} catch (Exception ex) {<br>
throw new UserApiException(USER001, COGNITO_EXCEPTION, ex.toString());<br>
}<br>
code for setting mfa preference<br>
//add the new password to the params map<br>
Map<String,String> challengeParams = new HashMap<String,String>();<br>
challengeParams.put(USERNAME, username);<br>
challengeParams.put(PASSWORD, password);<br>
challengeParams.put(SMS_MFA_CODE, mfaCode);<br>
//populate the challenge response<br>
final AdminRespondToAuthChallengeRequest challengeRequest = new AdminRespondToAuthChallengeRequest();<br>
challengeRequest.withChallengeName(ChallengeNameType.SMS_MFA)<br>
.withClientId(cognitoConfig.getClientId())<br>
.withChallengeResponses(challengeParams)<br>
.withUserPoolId(cognitoConfig.getUserPoolId())<br>
.withSession(mySession);


...