翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ユーザー移行の Lambda トリガーを使用したユーザーのインポート
このアプローチでは、ユーザーがアプリケーションで初めてサインインするとき、またはパスワードのリセットをリクエストするときに、既存のユーザーディレクトリからユーザープールにユーザーをシームレスに移行できます。ユーザー移行の Lambda トリガー 関数をユーザープールに追加すると、サインインしようとするユーザーに関するメタデータを受け取り、外部 ID ソースからユーザープロファイル情報を返します。この Lambda トリガーの詳細 (リクエストとレスポンスのパラメータなど) とサンプルコードについては、「ユーザー移行の Lambda トリガーのパラメータ」を参照してください。
ユーザーの移行を開始する前に、 AWS アカウントでユーザー移行の Lambda 関数を作成し、ユーザープールに Lambda 関数 をユーザー移行トリガーとして設定します。Amazon Cognito サービスアカウントプリンシパルのみを許可し、Lambda 関数cognito-idp.amazonaws.com
を呼び出し、独自のユーザープールのコンテキストでのみ許可する承認ポリシーを Lambda 関数に追加します。詳細については、「AWS Lambda のリソースベースのポリシーを使用する (Lambda 関数ポリシー)」を参照してください。
サインインプロセス
-
ユーザーはアプリを開き、Amazon Cognito ユーザープールAPIまたは Amazon Cognito がホストする UI を使用してサインインします。Amazon Cognito でのサインインを容易にする方法の詳細についてはAPIs、「」を参照してくださいAmazon Cognito の認証と認可を、ウェブアプリケーションとモバイルアプリケーションに統合する。
-
アプリケーションはユーザー名とパスワードを Amazon Cognito に送信します。アプリに で構築したカスタムサインイン UI がある場合 AWS SDK、アプリは InitiateAuth または
ADMIN_USER_PASSWORD_AUTH
フローAdminInitiateAuthでUSER_PASSWORD_AUTH
または を使用する必要があります。アプリケーションがこれらのフローのいずれかを使用すると、 はパスワードをサーバーSDKに送信します。注記
ユーザー移行トリガーを追加する前に、アプリケーションクライアントの設定で
USER_PASSWORD_AUTH
またはADMIN_USER_PASSWORD_AUTH
フローを有効化します。デフォルトのUSER_SRP_AUTH
フロー の代わりにこれらのフローを使用する必要があります。Amazon Cognito は、他のディレクトリでのユーザーの認証を検証できるように、Lambda 関数にパスワードを送信する必要があります。は、Lambda SRP 関数からユーザーのパスワードを隠します。 -
Amazon Cognito は、送信されたユーザー名がユーザープール内のユーザー名またはエイリアスと一致するかどうかをチェックします。ユーザーの電子メールアドレス、電話番号、または優先ユーザー名を、ユーザープールのエイリアスとして設定できます。ユーザーが存在しない場合、Amazon Cognito は、ユーザー名やパスワードなどのパラメータを ユーザー移行の Lambda トリガー 関数に送信します。
-
ユーザー移行の Lambda トリガー 関数は、既存のユーザーディレクトリまたはユーザーデータベースを使用してユーザーをチェックまたは認証します。この関数は、Amazon Cognito がユーザープールのユーザープロファイルに保存するユーザー属性を返します。送信されたユーザー名がエイリアス属性と一致する場合にのみ、
username
パラメータを返します。ユーザーが既存のパスワードを引き続き使用できるようにする場合は、Lambda レスポンスで属性finalUserStatus
をCONFIRMED
に設定します。アプリケーションは、ユーザー移行の Lambda トリガーのパラメータ に示されるすべての"response"
パラメータを返す必要があります。重要
リクエストイベントオブジェクト全体をユーザー移行 Lambda コードに記録しないでください。このリクエストイベントオブジェクトには、ユーザーのパスワードが含まれます。ログをサニタイズしない場合、パスワードは CloudWatch ログに表示されます。
-
Amazon Cognito はユーザープールにユーザープロファイルを作成し、トークンをアプリケーションクライアントに返します。
-
アプリケーションはトークンの取り込みを実行し、ユーザー認証を受け入れ、リクエストされたコンテンツに進みます。
ユーザーを移行したら、USER_SRP_AUTH
を使用してサインインします。Secure Remote Password (SRP) プロトコルは、ネットワーク全体にパスワードを送信せず、移行時に使用するUSER_PASSWORD_AUTH
フローよりもセキュリティ上の利点を提供します。
クライアントデバイスやネットワークの問題など、移行中にエラーが発生した場合、アプリケーションは Amazon Cognito ユーザープール からエラーレスポンスを受け取りますAPI。この場合 Amazon Cognito はユーザープールにユーザーアカウントを作成しない可能性があります。その後、ユーザーは再度サインインを試行する必要があります。サインインが繰り返し失敗した場合、アプリケーションでパスワードを忘れた場合のフローを使用してユーザーのパスワードをリセットする必要があります。
パスワードを忘れた場合のフローでは、UserMigration_ForgotPassword
イベントソースを使用して ユーザー移行の Lambda トリガー 関数も呼び出します。ユーザーはパスワードのリセットをリクエストしてもパスワードを送信しないため、Amazon Cognito は Lambda 関数に送信するイベントにパスワードを含めません。関数では、既存のユーザーディレクトリ内のユーザーのみを検索し、ユーザープールのユーザープロファイルに追加する属性を返すことができます。関数が呼び出しを完了しAmazon Cognitoにレスポンスを返すと、ユーザープールはパスワードリセットコードを E メールまたは で送信しますSMS。アプリで、ユーザーに確認コードと新しいパスワードの入力を求め、その情報をConfirmForgotPasswordAPIリクエストで Amazon Cognito に送信します。Amazon Cognito がホストする UI で、パスワードを忘れた場合のフロー用の組み込みページを使用することもできます。