Basic認証をかけるには

環境

Amazon Linux 2

Apache2.4

やり方

httpd.conf等のconfigファイルに次の文を付け加える。

<Directory "{Basic認証をかけたいディレクトリの絶対パス}">
  Options All -Indexes
  AllowOverride All

  AuthUserFile {htpasswdの絶対パス}
  AuthName "Please enter your ID and password"
  AuthType Basic
  Require valid-user
</Directory>

次に、IDとパスワードを書き込むファイルを用意する。 この時、var/www/htmlなどの実際にアクセスするディレクトリは避ける。 例えば、/etc/httpd/basicを作る等する。

そこにhtpasswdというファイルを作成し、(実際にはAuthUserFileに書いてあれば名前はなんでも良い)IDとパスワードを記述する。

このとき、パスワードは暗号化しなければならないので、こちら のツールで生成し、そのまま貼り付ける。

注意点

ディレクティブの中身を追加する時、Require all grantedが入っていたら消す必要がある。(全てのアクセスを許可してしまうため) 新しく作った場合は問題ない。

CDNでは使えない。

筆者はCloudFrontを利用していたため、いつまでもできず、時間を費やした。 CDNでは直接サーバーを介さないので、いつまでたってもできるわけなかった。 Hosts書き換えを行うことで、検証できた。

実際は各CDNの設定などでBasic認証を使えることはあるらしいが、今回の方法では使うことができない。