CloudFrontでBasic認証


CloudFrontの設定をいっつもパートナーさんに投げてるとバチが当たる。
俺の貴重な1時間はこうして無駄になったのである。
CloudFrontを利用しているサイトにBASIC認証をかける時は、Headerの設定をしないといかんよ、というメモ。

Apacheの設定

これはごくごく普通の設定。今回はバーチャルホストの設定ファイルで書いてますが、.htaccessを使っていても一緒です。ちなみにApache2.4です。

AuthUserfile {{ パス }}/.htpasswd
AuthName "Please enter your ID and password"
AuthType Basic
Require valid-user

通常はこれでBASIC認証の設定は完了します。apachectl restartなどでApacheを再起動して該当URLにアクセス、例のダイアログが表示されたら設定自体は問題ないはずです。

CloudFrontの設定

…ところが、間にCloudFrontを噛ましていると、このダイアログが消えず、無限認証地獄にはまり込みます…。何故なら、CloudFrontはデフォルトで認証情報を通してくれないから…。そこで設定を変更してやります。

  1. CloudFrontのコンソールにアクセス。該当のドメインの管理画面にログインします
  2. 「Behaviors」のタブをクリック
  3. 「Create Behavior」をクリック。Behavior作成画面に遷移します
  4. Path Patternに「*」を設定。もしくは、対象のディレクトリを指定します
  5. Whitelistsに、「Authorization」を追加して、画面右下の「Yes, Edit」を押下。編集を完了します

これで無事、サイトにアクセスできるようになったはず。
あなたのちょっとした時間が無駄にならなければ、俺はそれだけで幸せなのです。