🍪

cognito-at-edge は CookiePath を指定して使おう

2024/06/26に公開

awslabs/cognito-at-edge を利用する場合、以下のように cookiePath を設定しておきましょう。
v1.5.1 現在では cookiePath が正しく設定されていない場合にリダイレクトループが発生することがあります。

const { Authenticator } = require('cognito-at-edge');

const authenticator = new Authenticator({
    region: 'aws-region',
    userPoolId: 'user-pool-id',
    userPoolAppId: 'user-pool-app-id',
    userPoolDomain: 'example.com',
    cookiePath: '/' // これがないとリダイレクトループが発生する
});

exports.handler = async (request) => authenticator.handle(request);

CloudFront と Cognito を組み合わせてアクセス制御を行う際、 awslabs/cognito-at-edge を利用しています。
今回、新しく構築した環境で初回アクセスから一定時間が経過すると Cognito 周辺で無限リダイレクトが発生してしまう問題が発生しました。

どうやら cognito-at-edge が Cookie に設定する idToken の期限が切れ、リフレッシュトークンを用いたトークン再取得時に、失効しているトークンをうまく置き換えられない問題があるようで、この問題は 2023年 6月 15日には issue として報告されていますが、現時点では初期値の更新などはされておらず、明示的な設定が必要です。

Happy Elements

Discussion