setUserMFAPreference method

Future<void> setUserMFAPreference({
  1. required String accessToken,
  2. EmailMfaSettingsType? emailMfaSettings,
  3. SMSMfaSettingsType? sMSMfaSettings,
  4. SoftwareTokenMfaSettingsType? softwareTokenMfaSettings,
  5. WebAuthnMfaSettingsType? webAuthnMfaSettings,
})

Set the user's multi-factor authentication (MFA) method preference, including which MFA factors are activated and if any are preferred. Only one factor can be set as preferred. The preferred MFA factor will be used to authenticate a user if multiple factors are activated. If multiple options are activated and no preference is set, a challenge to choose an MFA option will be returned during sign-in. If an MFA type is activated for a user, the user will be prompted for MFA during all sign-in attempts unless device tracking is turned on and the device has been trusted. If you want MFA to be applied selectively based on the assessed risk level of sign-in attempts, deactivate MFA for users and turn on Adaptive Authentication for the user pool.

Authorize this action with a signed-in user's access token. It must include the scope aws.cognito.signin.user.admin.

May throw ForbiddenException. May throw InternalErrorException. May throw InvalidParameterException. May throw NotAuthorizedException. May throw OperationNotEnabledException. May throw PasswordResetRequiredException. May throw ResourceNotFoundException. May throw UserNotConfirmedException. May throw UserNotFoundException.

Parameter accessToken : A valid access token that Amazon Cognito issued to the currently signed-in user. Must include a scope claim for aws.cognito.signin.user.admin.

Parameter emailMfaSettings : User preferences for email message MFA. Activates or deactivates email MFA and sets it as the preferred MFA method when multiple methods are available. To activate this setting, your user pool must be in the Essentials tier or higher.

Parameter sMSMfaSettings : User preferences for SMS message MFA. Activates or deactivates SMS MFA and sets it as the preferred MFA method when multiple methods are available.

Parameter softwareTokenMfaSettings : User preferences for time-based one-time password (TOTP) MFA. Activates or deactivates TOTP MFA and sets it as the preferred MFA method when multiple methods are available. Users must register a TOTP authenticator before they set this as their preferred MFA method.

Parameter webAuthnMfaSettings : User preferences for passkey MFA. Activates or deactivates passkey MFA for the user. When activated, passkey authentication requires user verification, and passkey sign-in is available when MFA is required. To activate this setting, the FactorConfiguration of your user pool WebAuthnConfiguration must be MULTI_FACTOR_WITH_USER_VERIFICATION. To activate this setting, your user pool must be in the Essentials tier or higher.

Implementation

Future<void> setUserMFAPreference({
  required String accessToken,
  EmailMfaSettingsType? emailMfaSettings,
  SMSMfaSettingsType? sMSMfaSettings,
  SoftwareTokenMfaSettingsType? softwareTokenMfaSettings,
  WebAuthnMfaSettingsType? webAuthnMfaSettings,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSCognitoIdentityProviderService.SetUserMFAPreference'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    signed: false,
    // TODO queryParams
    headers: headers,
    payload: {
      'AccessToken': accessToken,
      if (emailMfaSettings != null) 'EmailMfaSettings': emailMfaSettings,
      if (sMSMfaSettings != null) 'SMSMfaSettings': sMSMfaSettings,
      if (softwareTokenMfaSettings != null)
        'SoftwareTokenMfaSettings': softwareTokenMfaSettings,
      if (webAuthnMfaSettings != null)
        'WebAuthnMfaSettings': webAuthnMfaSettings,
    },
  );
}