ALB で Cognito ユーザープール認証を使う構成で 1 週間以上ログイン状態を維持できません
困っていた内容
Application Load Balancer(ALB)でユーザー認証に Cognito ユーザープールを使用しています。
Cognito ユーザープールのアプリクライアントの設定では、ID トークン・アクセストークンの有効期限を 10 日としましたが、1 週間で再ログインが求められます。
ALB のユーザー認証に Cognito を使用する構成で、1 週間以上ログイン状態を維持することはできますか?
どう対応すればいいの?
上記の構成では 1 週間以上ログイン状態を維持することはできません。
ALB がログイン状態を維持するにはセッションが必要です。しかしながら、ALB のセッションタイムアウト設定は、最大で 604,800 秒(1 週間)であるため、1 週間経過すると再ログインを求められる挙動になります。(2021/03/15 時点)
ALB のセッションタイムアウト設定を 604,800 から 1 秒でも長く設定すると、以下のようにバリデーションエラーが表示されます。
よって、1 週間以上ログイン状態を維持したい要件があれば、ALB のユーザー認証は利用せず、別途 Cognito ユーザープール認証の仕組みを設けることを検討してください。
たとえば以下のような方法が考えられます。
- アプリ側でトークンを検証する
- バックエンドサーバーの前段に API Gateway を配置し Cognito ユーザープールと連携させる
参考資料
- Application Load Balancer を使用してユーザーを認証する - Elastic Load Balancing
- AuthenticateCognitoActionConfig - Elastic Load Balancing
SessionTimeout
The maximum duration of the authentication session, in seconds. The default is 604800 seconds (7 days).
Type: Long
Required: No