概要
ベーシック認証を入れて正しいIDとパスワードを入力したはずなのに何度やっても通らない。。。
正しい認証情報を入力しても、認証ダイアログが無限ループで表示されます。
もしそんな状況が起きた時はcloudfrontの設定が原因かもしれません。
起きた事象
.htaccessと.htpasswdを認証したいディレクトリに置くお決まりの作法で用意してあげてapacheをrestart!
よしベーシック認証かかってるはず・・・何度IDとPWを入れても例のダイアログが出続ける
これはおかしい...
アクセス先から参照してる対象ディレクトリでベーシック認証かかってるかも?
そんなこともなくテストファイルを置いても発生した。
問題の原因
HTTP認証はチャレンジ・レスポンス方式で行われています。
サーバーで自分自身を認証したいクライアントAuthorizationは、資格情報を含む要求ヘッダーを含めることで認証できます。
そのレスポンスにも通常、Authorizationヘッダーを含む要求を発行します。
そのヘッダーに含む情報にAuthorizationがないから(cloudfrontでその設定をしてないから)今回の問題が起きました。
引用:https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication
おかしいなと思ったらNetworkを見る
x-cacheの箇所に「Error from cloudfront」と出ています。
croudfront内でのエラーが濃厚です。
cloudfrontでheaderにAuthorizationを含める
CloudFront→Distributionにメニューから飛んで
BehaviorsのDefaultパターンを選択して編集
cloudfrontのAdd headerに「Authorization」を追加してあげます。
旧デザインだとwhitelistheaderというところにあります。
終わり
これでベーシック認証でIDとPWを入れて認証がうまく通りました。