今更ながら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>

参考サイトはこちら

www.evoworx.co.jp