AWS Cognito とは
こちらのマネージドサービスを使うと非常に便利に以下のような機能をノーコードで実装することができます
- ユーザ認証
- ログイン画面(ログイン認証そのものを含む)
- セッション管理
- パスワード忘れの対応(検証コード送付及びパスワード再設定)※この記事はこれについて解説
パスワード忘れ時の対応
AWS CognitoはHostedUIを使って提供されてるログイン画面を使うことができます。
ログイン画面でパスワードが分からない場合に「Forgot your password?」をクリックすると、
自動で検証コードが入ったメールがユーザに送られて、
パスワードを再設定することが可能です。
以下、パスワード忘れのフローを使えるようにする設定等について解説します。
なお、こちらの記事は現時点(2021/04/15)のものになります。
ユーザ登録で必要な設定
ユーザを登録する時に「Eメールを検証済みにしますか?」にチェックを入れる
Cognito>ユーザーとグループ>ユーザの作成
※こちらはEmailアドレスをユーザーIDに設定した場合の登録方法です。
メールアドレスが検証済みになる
Cognito>ユーザーとグループ>登録したユーザ 以下のように登録内容に「email_verified true」となっていること
「email_verified true」という状態になっていなければ、ログイン画面で「Forgot your password?」を押して、
パスワード忘れのフローを行っても、実際には検証コードが送られてこないので、必ず検証済みにする必要があります。
※後日AWSCLIから「email_verified true」に変更することも可能
パスワード忘れ(Forgot your password?)時に送付されるメッセージの登録箇所
Cognito>メッセージのカスタマイズ>「E メール検証メッセージをカスタマイズしますか?」
※改行は反映されないので改行を入れるなら<br/>
を入れよう
パスワード忘れのときのフロー(UIは初期設定のまま)
※この一連の画面は英語のみで日本語に変更することはできない
ログイン画面>「Forgot your password?」をクリック
AWS Cognitoのメールに関する制限
AWS Cognitoで使えるリソース(ユーザの登録、ユーザのデータ参照等)はすべて制限値があります。
以下メールとパスワード忘れ時に関するデフォルトの設定です。
※ものによっては上限を上げる希望を出せる
- AWS アカウントごとに 1 日に送信される E メールメッセージの最大数は50件
- パスワードを忘れた場合のコードの有効期限 1 時間
- パスワード忘れ等は1秒あたり30リクエストまで
- UserAccountRecovery(パスワード忘れ、パスワード変更等)
- Service Quotas>AWS のサービス>Amazon Cognito User Pools>「UserAccountRecovery」で検索
- こちらで実際の利用状況をモニタリングできる
参照
Use Cognito Forgot password cannot receive any code with Email
のクォータAmazon Cognito(Quotas in Amazon Cognito)
※機械翻訳なので日本語のタイトルが非常に味のあるものになっている