Cognito User Poolsでパスワード忘れた状態でメアド変更したら詰みかけた話

ログインしたまま作業してたらパスワード忘れたってことありませんか? これは開発時のデバッグで、パスワード変更→メールアドレス変更→ログアウト→「あれ、パスワードなんだっけ」ってなって詰みかけた話です。 なぜ詰みかけた メ […]

広告ここから
広告ここまで

目次

    ログインしたまま作業してたらパスワード忘れたってことありませんか?

    これは開発時のデバッグで、パスワード変更→メールアドレス変更→ログアウト→「あれ、パスワードなんだっけ」ってなって詰みかけた話です。

    なぜ詰みかけた

    • メールアドレスを変更している
    • 変更したメールアドレスの認証をしていなかった
    • メールアドレスの認証はログインしていないとダメ
    • パスワードがわからないから入れない
    • メールアドレスが認証されてないので、パスワード再発行ができない
    • \(^o^)/

    Cognito User Poolに作成されたユーザーの情報はマネージドコンソールからいじれないので、通常のユーザーであれば完全に詰んでる状態に・・・

    困った時のaws-sdk (多分CLIでもいける)

    幸い自分が開発に関わってるサービス(だから詰むような操作したともいえる)だったので、裏側でなんとかしました。

    const AWS = require('aws-sdk')
    const cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider({apiVersion: '2016-04-18'});
    
    const params = {
      UserAttributes: [ /* required */
        {
          Name: 'email_verified', /* required */
          Value: 'true'
        },
      ],
      UserPoolId: 'ap-northeast-1_XXXXX', /* required */
      Username: 'example_user' /* required */
    };
    cognitoidentityserviceprovider.adminUpdateUserAttributes(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });
    

    こんな感じのコード書いて、email_verifiedをtrueにしてやればパスワード再発行ができます。

    万が一同じようなことをして詰んだユーザーから問い合わせがきたらこれで対応すると思います。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark