やりたいこと
CloudFront経由で公開しているサイトにて、Cognitoの認証がされていないアクセスについてはログイン画面にリダイレクトさせたい。
使うもの
Cognito アプリケーションクライアント設定
- OAuth 付与タイプを「認証コード付与」にする
- コールバックURLにPathを含めない(例:https://example.com )← cognito-at-edgeの仕様? .com/のようにスラッシュも省くこと
- 「ホストされた UI を表示」ボタンから飛べるHosted UIは使わない(使えない。ログイン後に502エラーとなる)
Lambda@Edge設定
awslabs/cognito-at-edge をLambda@edgeに設定する。
npm install cognito-at-edge
Lambda@Edge用に関数を作成し、上記コマンドの生成物をLambdaにあげる。
動き
Pathを含めたURLでアクセスした場合もログイン画面にリダイレクトされる。ログイン後に、Pathを含めたURLにリダイレクトされる。
https://example.com/page/test.html にアクセスしたとして、ログイン後も同じURLにリダイレクトされる。