Cognitoでパスワードを忘れた時の実装方法

0

Cognitoでパスワードを忘れた時、確認用のコードをユーザーにメール送付することができますが、ユーザービリティの向上のためにユーザーにコードを入力させることを避けたいです。 そのためには、パスワード入力画面のURLにクエリパラメータとしてコードを直接付与するしか方法が思いつきませんでした。 他に方法はあるでしょうか?

yurugby
gefragt vor einem Jahr814 Aufrufe
1 Antwort
0

お問い合わせありがとうございます。
Amazon Cognito でユーザーがパスワードを忘れ、新しくパスワードを設定する際に、 E メールで受け取る復旧コードの入力の手間をユーザビリティ向上のために省きたいという認識の上、ご案内させていただきます。 もし認識に相違がございましたら、ご指摘いただけますと幸いです。

Amazon Cognito 単体では、復旧コードをクエリパラメータとして付与した URL を作成して送付できないため、今回のケースでは AWS Lambda を使用する必要がございます。

確認しましたところ、復旧コードをクエリパラメータとして付与した URL を AWS Lambda 上で作成し、そのリンクを Forgot Password のイベント時にユーザーの E メールに送ることができます。

しかしながら、Amazon Cognito で ホストされた UI 上では復旧コードの入力の手間を省くことは難しく、お客様の方でカスタマイズした UI を作成する必要があります。


解決策:
質問内ですでに言及いただきました通り、パスワード入力画面の URL にクエリパラメータとして復旧コードを直接付与する方法が解決案として考えられます。

まず、パスワードを変更する際には、ユーザーの復旧コードを検証する必要がございます。この検証に際して、Amazon Cognito は復旧コードを記載した E メールメッセージをユーザーに送信します。
今回の方法では、AWS Lambda をトリガーとして設定することで、パスワード変更の際に、復旧コードをクエリパラメータとして付与した URL を含む E メールメッセージをユーザーに送信します。

下記がそれぞれの詳細なステップになります。

  1. クエリパラメータを付与した URL を AWS Lambda 上で作成
    1-1. AWS マネジメントコンソールより AWS Lambda を選択し、関数の作成を選択
    1-2. 関数の中身には CustomMessage_ForgotPassword のトリガーソースを使用
    1-3. emailMessage の中身をカスタマイズする
    1-4. 関数の概要にCognito Sync Triggerを追加

カスタムメッセージの設定に関するより詳細な情報は、下記の記事を参照してください。

また、 CustomMessage_ForgotPassword のトリガーソースは、忘れたパスワードのリクエスト用の確認コードを送信する際に使用されるものです。
emailMessage の中身として、復旧コードをクエリパラメータとして付与した URL を設定することが可能です。
下記が、メッセージをカスタマイズする際の AWS Lambda 関数のコードの例になります。

const handler = async (event) => {
  if (event.triggerSource === "CustomMessage_ForgotPassword") {
    const message = `http://<your domain>/auth/forgot-password? 
    confirmation_code=${event.request.codeParameter}&user_name=${event.userName}`
    event.response.emailMessage = message;
  }
    return event;
};
export { handler };
  1. Amazon Cognito で Lambda トリガーの設定
    2-1. AWS マネジメントコンソールより Amazon Cognito を選択し、ユーザープールを選択
    2-2. ユーザープールの [ユーザープールのプロパティ] タブで [ Lambda トリガー] で Lambda トリガーを追加を選択
    2-3. トリガーに [メッセージング] を選択 し、前ステップで作成した AWS Lambda を選択
    2-4. Lambda トリガーを追加
    上記のステップを完了することで、カスタマイズした E メールのメッセージ内容が、Forgot Password イベント時にユーザーに送られるように設定されます。

  2. カスタマイズした UI を作成
    emailMessage の中身を AWS Lambda でカスタマイズすることで、Forgot Password イベント時に復旧コードをクエリパラメータとして付与した URL をユーザーに送ることは可能ですが、Amazon Cognito で ホストされた UI 上では、復旧コードの手動入力を省くことは難しいのが現状です。 そのため、SDK を使用し Custom UI を作成していただく必要がございます。
    ステップ 2 で述べたように、AWS Lambda を使用してカスタマイズした URL をユーザーに送ることができます。そちらの機能を利用し、お客様の方で Forgot Password のイベント時のカスタムインターフェースを作っていただく必要がございます。Custom UI 上で、URL のクエリーから復旧コードを取得できるので、ユーザーに手動で入力させることを防げると考えられます。


関連情報:

より具体的なサポートを必要とされる場合、以下のリンクよりサポートケースをご起票ください。

AWS
beantwortet vor einem Jahr

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen