adminSetUserMFAPreference method

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

Sets the user's multi-factor authentication (MFA) preference, including which MFA options 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.

Learn more

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 userPoolId : The ID of the user pool where you want to set a user's MFA preferences.

Parameter username : The name of the user that you want to query or modify. The value of this parameter is typically your user's username, but it can be any of their alias attributes. If username isn't an alias attribute in your user pool, this value must be the sub of a local user or the username of a user from a third-party IdP.

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.

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> adminSetUserMFAPreference({
  required String userPoolId,
  required String username,
  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.AdminSetUserMFAPreference'
  };
  await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'UserPoolId': userPoolId,
      'Username': username,
      if (emailMfaSettings != null) 'EmailMfaSettings': emailMfaSettings,
      if (sMSMfaSettings != null) 'SMSMfaSettings': sMSMfaSettings,
      if (softwareTokenMfaSettings != null)
        'SoftwareTokenMfaSettings': softwareTokenMfaSettings,
      if (webAuthnMfaSettings != null)
        'WebAuthnMfaSettings': webAuthnMfaSettings,
    },
  );
}