🍣

CloudFrontでキャッシュの設定するとベーシック認証が通らなくなる

2023/10/03に公開

ビヘイビアのヘッダーに追加する

参考記事

https://dev.classmethod.jp/articles/how-do-i-enable-basic-authentication-behind-cloudfront/

以下chatGPTに聞いたこと

質問

cloudfrontでキャッシュをかけるとベーシック認証が通らなくなる
なぜか?

回答

CloudFrontでキャッシュを使用する際、ベーシック認証が正常に動作しない場面が考えられます。以下はその主な理由と対応策です。

キャッシュキーの不足: CloudFrontはデフォルトでリクエストURLをキャッシュキーとして使用しますが、ベーシック認証の資格情報(Authorizationヘッダー)は考慮されません。その結果、異なる資格情報でリクエストがされても同じキャッシュコンテンツが返される可能性があります。

対応策: CloudFrontのキャッシュビヘイビア設定で、Authorizationヘッダーをホワイトリストに追加します。これにより、異なるベーシック認証資格情報を持つリクエストが異なるキャッシュエントリとして保存されるようになります。

キャッシュされたエラーレスポンス: 最初のベーシック認証が失敗すると、そのエラーレスポンス(例:401 Unauthorized)がキャッシュされる可能性があります。その後、正しい資格情報でリクエストしてもキャッシュされたエラーレスポンスが返される可能性があります。

対応策: CloudFrontのエラーページ設定を確認し、401エラーがキャッシュされないように設定します。

オリジンの設定: オリジンサーバー(EC2、S3など)の設定によっては、ベーシック認証を正常に処理できない場合があります。たとえば、ALB背後のEC2インスタンスを使用する場合、ALBがベーシック認証ヘッダーを削除する可能性があります。

対応策: オリジンサーバーの設定を確認し、必要に応じて修正します。

総じて、CloudFrontとベーシック認証を同時に使用する場合は、キャッシュの動作とヘッダーの取り扱いを正確に理解して設定する必要があります。適切なキャッシュの動作を確保するためには、CloudFrontの設定を慎重に確認し、テストを行うことが推奨されます。

Discussion