ユーザー移行の Lambda トリガーを使用したユーザープールへのユーザーのインポート - Amazon Cognito

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ユーザー移行の Lambda トリガーを使用したユーザープールへのユーザーのインポート

このアプローチでは、ユーザーがアプリケーションで初めてサインインするとき、またはパスワードのリセットをリクエストするときに、既存のユーザーディレクトリからユーザープールにユーザーをシームレスに移行できます。ユーザー移行の Lambda トリガー 関数をユーザープールに追加すると、サインインしようとするユーザーに関するメタデータを受け取り、外部 ID ソースからユーザープロファイル情報を返します。この Lambda トリガーの詳細 (リクエストとレスポンスのパラメータなど) とサンプルコードについては、「ユーザー移行の Lambda トリガーのパラメータ」を参照してください。

ユーザーの移行を開始する前に、 AWS アカウントでユーザー移行の Lambda 関数を作成し、ユーザープールに Lambda 関数 をユーザー移行トリガーとして設定します。Amazon Cognito サービスアカウントプリンシパルのみを許可する認証ポリシーを Lambda 関数に追加します。cognito-idp.amazonaws.com は、Lambda 関数を呼び出し、独自のユーザープールのコンテキスト内でのみ実行します。詳細については、「AWS Lambda のリソースベースのポリシーを使用する (Lambda 関数ポリシー)」を参照してください。

サインインプロセス

  1. ユーザーはアプリを開き、Amazon Cognito ユーザープールAPIまたは Amazon Cognito がホストする UI を使用してサインインします。Amazon Cognito でのサインインを容易にする方法の詳細についてはAPIs、「」を参照してくださいAmazon Cognito の認証と承認を、ウェブアプリケーションとモバイルアプリケーションに統合する

  2. アプリケーションはユーザー名とパスワードを Amazon Cognito に送信します。アプリに で構築したカスタムサインイン UI がある場合 AWS SDK、アプリは InitiateAuthまたは ADMIN_USER_PASSWORD_AUTHフローAdminInitiateAuthUSER_PASSWORD_AUTHまたは を使用する必要があります。アプリがこれらのフローのいずれかを使用すると、 はパスワードをサーバーSDKに送信します。

    注記

    ユーザー移行トリガーを追加する前に、アプリケーションクライアントの設定で USER_PASSWORD_AUTH または ADMIN_USER_PASSWORD_AUTH フローを有効化します。デフォルトの USER_SRP_AUTHフロー の代わりにこれらのフローを使用する必要があります。Amazon Cognito は、他のディレクトリでのユーザーの認証を検証できるように、Lambda 関数にパスワードを送信する必要があります。は、Lambda 関数からユーザーのパスワードをSRP隠します。

  3. Amazon Cognito は、送信されたユーザー名がユーザープール内のユーザー名またはエイリアスと一致するかどうかをチェックします。ユーザーの電子メールアドレス、電話番号、または優先ユーザー名を、ユーザープールのエイリアスとして設定できます。ユーザーが存在しない場合、Amazon Cognito は、ユーザー名やパスワードなどのパラメータを ユーザー移行の Lambda トリガー 関数に送信します。

  4. ユーザー移行の Lambda トリガー 関数は、既存のユーザーディレクトリまたはユーザーデータベースを使用してユーザーをチェックまたは認証します。この関数は、Amazon Cognito がユーザープールのユーザープロファイルに保存するユーザー属性を返します。送信されたユーザー名がエイリアス属性と一致する場合にのみ、username パラメータを返します。ユーザーが既存のパスワードを引き続き使用できるようにする場合は、Lambda レスポンスで属性 finalUserStatusCONFIRMED に設定します。アプリケーションは、ユーザー移行の Lambda トリガーのパラメータ に示されるすべての "response" パラメータを返す必要があります。

    重要

    リクエストイベントオブジェクト全体をユーザー移行 Lambda コードに記録しないでください。このリクエストイベントオブジェクトには、ユーザーのパスワードが含まれます。ログをサニタイズしないと、パスワードが CloudWatch ログに表示されます。

  5. Amazon Cognito はユーザープールにユーザープロファイルを作成し、トークンをアプリケーションクライアントに返します。

  6. アプリケーションはトークンの取り込みを実行し、ユーザー認証を受け入れ、リクエストされたコンテンツに進みます。

ユーザーを移行したら、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 で、パスワードを忘れた場合のフロー用の組み込みページを使用することもできます。