はじめに
Amazon Cognito user pools を使ってユーザー認証を実装していたところ、次のようなエラーに遭遇しました。
NotAuthorizedException: Temporary password has expired and must be reset by an administrator.
このエラーメッセージを見て、Amazon Cognito user pools が発行する仮パスワードの有効期限がわからなかったため、調べた内容をまとめます。
Amazon Cognito user pools が発行する仮パスワードの有効期限は?
Amazon Cognito user pools とは
Amazon Cognito user pools(以下、ユーザープール)は、AWS が提供するユーザー管理と認証のサービスです。
サインアップ、ログイン、MFAなど、認証に必要な機能をまとめて提供しています。
仮パスワードの有効期限はどこで指定されているか
管理者がユーザーを作成すると、ユーザープールによって仮パスワードが発行されます。
この仮パスワードには有効期限があり、TemporaryPasswordValidityDays で日数を指定できます。
デフォルトの有効期限は7日間で、0から365日の範囲で設定できます。
指定された日数を超えて仮パスワードでログインしようとすると、最初に紹介したエラーが返されます。
NotAuthorizedException: Temporary password has expired and must be reset by an administrator.
仮パスワードの有効期限を確認する方法
仮パスワードの有効期限は、AWS マネジメントコンソールから確認できます。
対象のユーザープールを開き、「認証 > 認証方法 > パスワードポリシー > 管理者によって設定された仮パスワードの有効期限」を確認すると、仮パスワードの有効期限が確認できます。
必要に応じて、この画面から有効期限を変更できます。
仮パスワードの有効期限の有効期限を過ぎてしまった場合
対象のユーザーを選択し、「アクション > パスワードをリセット」でパスワードのリセットを行うことができます。
さいごに
ユーザープールの仮パスワードには有効期限が設定されていて、その日数は TemporaryPasswordValidityDays によって指定されます。
デフォルトは7日間なので、必要に応じて設定を変更してみてください。