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にしてやればパスワード再発行ができます。

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

Comment