AWS Cognitoの罠
用語整理
ユーザープール
ユーザーを収容する場所
ソーシャルログイン
パスワード認証以外にGoogle、Facebook、Apple、OIDCなどのIDによる外部ID認証が可能
ユーザプールの問題
ユーザープールの多くの設定項目は、最初に決定したら変えられない
二段階認証などもそう
ユーザープールから別の場所にユーザーをパスワード付きでエクスポートする方法が存在しない
APIから取得できるユーザーリストにはパスワードに関する情報は一切ない
つまり、どうプールの移行をやってもパスワードだけは落ちる
ソーシャルログインの問題
必須属性は属性マッピングが必須
外部IDの対応する属性で自動で上書きされる
例えば、ログインで要求したりするemailが勝手に書き換わったりする
この場合、ユーザの外部ID連携を外さない限りemailが変更不可能になる
初回サインアップ時に外部IDで登録すると、基本的に外部IDログイン専用のユーザーになる
あとからパスワード認証をつけたりする事は推奨されない
As a best security practice and to keep users in sync with your external IdP, don't set passwords on federated user profiles. To set up a federated user for native sign-in with a linked native user, refer to Linking federated users to an existing user profile.
"As a best security practice..."とあるがどうしてパスワードをセットしないのがセキュリティ的にベストなのかは謎!
内部的にはその外部ID専用の特別なユーザーになっている