概要

MFA設定されているユーザーのMFAを無効化したいけど、公式になかなか情報が載ってないのでシェア。

ソースコード

MFAOptions配列を空配列で実行すると無効化できます。逆に指定したい時は適宜配列を指定してください。

/**
 * MFA設定の有効化
 * @param username
 * @param twoStepAuthentication
 * @param userPoolId
 * @returns {Promise<void>}
 */
const setUserMFAPreference = async (
  username,
  twoStepAuthentication,
  userPoolId
) =>
  new Promise((resolve) => {
    const params = {
      Username: username,
      UserPoolId: userPoolId,
      MFAOptions: [] // 空のまま更新すると無効化できる様子(非公式情報)
    };
    if (twoStepAuthentication) {
      params.MFAOptions.push({
        AttributeName: 'phone_number',
        DeliveryMedium: 'SMS'
      });
    }
    cognitoIdentityServiceProvider.adminSetUserSettings(params, (err, data) => {
      if (err) {
        throw err;
      } else {
        console.log(
          'Set CognitoUserPool Multi-factor authentication :',
          username
        );
        resolve(data);
      }
    });
  });

そのまま関数をコピペして使ってください👍