はじめに

こんにちは!クラウドインテグレーション事業部の鳥井です。

Webアプリ開発でユーザー認証にAmazon Cognito、便利ですよね!特にユーザープールの仮パスワード発行機能は、新規ユーザーの登録時やパスワード忘れの際に大活躍してくれます。

ところで、この仮パスワードの有効期限は日単位で設定できるじゃないですか。例えば「1日」って設定した場合に、具体的にいつまで有効なんだろう?って疑問に思ったことありませんか?

以前、開発しているWebアプリで、仮パスワードの有効期限が絡む可能性のある事象でちょっとした確認が必要になったことがあったんです。

仮パスワードの有効期限、どれがホント?

例えば、6月1日 12時00分に有効期限が「1日」の仮パスワードを発行した場合、有効期限はいつ切れると思いますか?

  • 仮説1:当日まで?(6月1日 23時59分まで)
  • 仮説2:きっかり24時間後?(翌日の6月2日 12時00分まで)
  • 仮説3:翌日まで?(6月2日 23時59分まで)

AWSの公式ドキュメントも探してみたんですが、この「厳密にいつ!」という情報が、残念ながら見つけられなかったんです…。
うーん、気になる!これはもう、実際に試してみるしかない!

【調査方法】至ってシンプル!

ということで、実際に手を動かして調べてみることにしました。やったことはとっても簡単です。

  1. Amazon Cognitoユーザープールで仮パスワードの有効期限を「1日」に設定する
  2. 検証用のユーザーを新規作成する(仮パスワードが発行される)
  3. 仮説で挙げた有効期限切れが想定されるタイミングで、実際に仮パスワードを使ってログインを試行する

これで、どのタイミングで「あ、有効期限切れましたね」となるかを確認するわけです。

【判明した有効期限】そして、結果は…!

実際に試してみた結果…!

Amazon Cognitoの仮パスワード(有効期限1日設定)は、発行時刻からきっかり24時間後に有効期限が切れる
ということが確認できました!

つまり、6月1日 12時00分に発行された仮パスワードは、翌日の6月2日 12時00分を過ぎると使えなくなる、ということです。
ちなみに、発行から24時間が経過する1分前は、仮パスワードが有効なことも確認済みです!

いやー、スッキリしました!

まとめ

今回は、Amazon Cognitoが発行する仮パスワードの厳密な有効期間について調査してみました。公式ドキュメントでは見つけられなかった情報でしたが、実際に試してみることで明確な答えを得ることができました。

今回の検証ポイント

  • Cognitoの仮パスワード有効期限「N日」は、発行から「N × 24時間後」と解釈できる。
  • 公式ドキュメントに明記されていない場合でも、実際に検証してみるのが大事!

皆さんの開発現場でも、もし同じような疑問を持たれた方がいらっしゃれば、この情報が少しでもお役に立てれば嬉しいです!