4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cognitoが現在抱えるサインアップに関するバグ(2022/03/04現在)

Last updated at Posted at 2022-03-04

同じ電話番号のユーザが複数同時に作られてしまう

Usernameに電話番号を指定して、SignUpAPIを一度しか叩いていないのに、
ユーザープールのコンソールでその電話番号を検索するとなぜか複数のアカウントが出現!
という事象に遭遇しました。

これをAWSのサポートに問い合わせたところ、現在かかえるバグなのだそうです。
ちなみに、そのユーザープールはサインアップ前のトリガーでLambdaをつかってゴニョゴニョしていたため、
トリガーの設定によるものかと尋ねたところ、それは関係なく確認されているそうです。

(明確にサポート側からバグだと明言されたのは私には初めての体験でした!)

知っておこう

こういう事象が発生するということを認識していないと、電話番号が一意であるという前提でシステムを組んでいる場合に問題が発生します。
この挙動を知っていれば一意にするために何か別の処理を加えることで対応はできますね。

具体例

私が最初に遭遇したのは以下のような設定のユーザープールでした。

スクリーンショット 2022-03-04 9.18.21.png

  • 電話番号でログイン
  • 電話番号の検証プロセスを別で用意
  • トリガー(Lambda)内でユーザの電話番号を検証済みにする

この状態で

aws cognito-idp sign-up --client-id ************** --username "+81**********" --password "************" 

これを打つと、稀に同じ電話番号のユーザが複数できているのでした。

挙動

同じ電話番号のアカウントが複数存在する場合の挙動を以下に記します。

  • ログイン(InitiateAuth)をすると、一番初めに登録されたアカウントの情報が返される
  • 電話番号を指定してDeleteUserを行うと、一番初めに登録されたアカウントが削除される
  • アカウント1つを削除後にログイン(InitiateAuth)しても、エラーになりユーザ情報は返されない
    • 削除についても同様
  • アカウント1つを削除後に、同じ電話番号でサインアップ(新規登録)すると登録できる

通常、上記の設定だとAという電話番号のアカウントが存在する場合に、 SignUpAPIでその電話番号で新たにアカウントを作ることができません。
しかし、これらの挙動を見るに、複数アカウントが作成された場合の電話番号によるログイン、削除、サインアップについては、他のアカウントは存在しないかのように扱われるようです。

その他参考になる記事

4
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?