verifySoftwareToken method

Future<VerifySoftwareTokenResponse> verifySoftwareToken({
  1. required String userCode,
  2. String? accessToken,
  3. String? friendlyDeviceName,
  4. String? session,
})

Registers the current user's time-based one-time password (TOTP) authenticator with a code generated in their authenticator app from a private key that's supplied by your user pool. Marks the user's software token MFA status as "verified" if successful. The request takes an access token or a session string, but not both.

May throw CodeMismatchException. May throw EnableSoftwareTokenMFAException. May throw ForbiddenException. May throw InternalErrorException. May throw InvalidParameterException. May throw InvalidUserPoolConfigurationException. May throw NotAuthorizedException. May throw OperationNotEnabledException. May throw PasswordResetRequiredException. May throw ResourceNotFoundException. May throw SoftwareTokenMFANotFoundException. May throw TooManyRequestsException. May throw UserNotConfirmedException. May throw UserNotFoundException.

Parameter userCode : A TOTP that the user generated in their configured authenticator app.

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 friendlyDeviceName : A friendly name for the device that's running the TOTP authenticator.

Parameter session : The session ID from an AssociateSoftwareToken request.

Implementation

Future<VerifySoftwareTokenResponse> verifySoftwareToken({
  required String userCode,
  String? accessToken,
  String? friendlyDeviceName,
  String? session,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSCognitoIdentityProviderService.VerifySoftwareToken'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    signed: false,
    // TODO queryParams
    headers: headers,
    payload: {
      'UserCode': userCode,
      if (accessToken != null) 'AccessToken': accessToken,
      if (friendlyDeviceName != null)
        'FriendlyDeviceName': friendlyDeviceName,
      if (session != null) 'Session': session,
    },
  );

  return VerifySoftwareTokenResponse.fromJson(jsonResponse.body);
}