既存のID&パスワード認証のシステムに加え、新たにシステムを作り、SSO(シングルサインオン)を実装するために、Cognitoを使う。
その際に、既存のユーザー情報を移行しないといけないので、調べてみました。
マサカリ待ってます。
前提
AWS CLIは使わず、マネジメントコンソールから操作します。
既存の認証基盤仕様
ログインするためにユーザーが入力するもの
- ユーザーID(またはメールアドレス)
- パスワード
移行について
[懸念点]ユーザーにパスワードの変更をしてもらう必要がある
[モバイルアーキテクチャ ] Cognitoにどこまで任せるべきか?研究してみた - Qiita
既存のメール認証システムから移行する場合、name, email, phone numberなどはcsvでimportできるが、passwordだけはimportできないので、ユーザーにpasswordの再設定を依頼する必要がある。そのため、移行コストは高い
CSVでユーザーをインポートする
既存のユーザー情報を定められた形式のCSVファイルからインポートできる。
既存システムから、CSVを作る仕組みは別途用意しなければなりません。
ユーザーインポート .csv ファイルの作成 - Amazon Cognito
フォーマットはユーザープールで設定した属性に依るので、「CSVヘッダーのダウンロード」からヘッダーファイルをダウンロードします。
name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled,cognito:username
インポートするには上記ヘッダーに合わせて必要な情報を作っていく必要がある
name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled,cognito:username
tanaka,,,,,,,,,tanaka@example.com,TRUE,,,,,,FALSE,,,FALSE,tanaka
suzuki,,,,,,,,,suzuki@example.com,TRUE,,,,,,FALSE,,,FALSE,suzuki
yamamoto,,,,,,,,,yamamoto@example.com,TRUE,,,,,,FALSE,,,FALSE,yamamoto
このCSVファイルを、「インポートジョブの作成」から選択してジョブを作成します。
(試行錯誤の跡がありますが)、ステータスがCreated
の状態で、開始
を押します。
成功するとSuccessed
の状態になります。
Too many users have failed or been skipped during the import.
というエラーは、CSVの内容を見直してください。具体的なエラー内容は、CloudWatchLogsに吐き出されています。
あとはアプリクライアントからパスワードのリセットを促すように対応すれば移行できるかと思います。