今更ながらBasic認証の注意点
ステージングサイトはURLアクセスを制限するため、Basic認証やダイジェスト認証をかけますよね。 既存のサイトから新サイトに移行するにあたって、既存のサイトにかかっているBasic認証をかけようと思い少しはまったので、備忘として記載します。
一番最初にハマったのはBasic認証のモジュールをhttpd.confにロードしていなかったこと! 以下のようにhttpd.confにLoadModuleの記載を追加
ハマりポイント①: modulesの設定がない
/etc/httpd/modulesにbasic認証用のモジュールが置いているだけでは不十分で、以下のように、httpd.confにLoadModuleを記載しなければいけなかった。
# Example: # LoadModule foo_module modules/mod_foo.so # LoadModule auth_basic_module modules/mod_auth_basic.so
ハマりポイント②: vhosts用設定ファイルの中身
はじめ以下のようにRequire all grantedとRequire valid-userが一緒に記載されていた。
この際の動きはorなので、all grantedがきいてしまい、Basic認証のダイアログが出てこない事態に。
< 誤り >
<Directory /var/www/html/stg.sample.jp> AllowOverride All Require all granted AuthType Basic AuthName "Enter Passcode." AuthUserFile "/etc/httpd/conf/auth/stg.passwd" Require valid-user </Directory>
正解は、こちら。/var/www/html/まではhttpd.confでRequire all grantedを指定しておき、ステージングサイト(/var/www/html/stg.sample.jp)のみvalid-userで指定されたユーザアクセスだけを許可すれば良い。
Allow Override Allの指定もお忘れなく。
< 正解 >
<Directory /var/www/html/stg.sample.jp> AllowOverride All AuthType Basic AuthName "Enter Passcode." AuthUserFile "/etc/httpd/conf/auth/stg.passwd" Require valid-user </Directory>
参考サイトはこちら