検証環境から本番にもっていくときに認証設定消し忘れてたらえらいことになるよという話。
最近本番用サーバのauth_basic_moduleの読み込みを外しているサーバがあり動作が気になったので調べてみた。
(今思えば単なるパフォーマンスチューニングのためにUnloadしていたのかもしれない)
結果的には読み込みを外してもbasic認証用の構文を書くとダイアログが出力されるということが分かった。
ただ厄介なことに、Unloadした状態だと正しいID/PASSを入れてもページが出ないということ。
以下実験内容
まず、初期環境として
- httpd.confの
<Directory "/var/www/html">
内にbasic認証の仕掛けを書く
(↑AllowOverrideで許可すれば.htaccessに書いても同じだと思う) - auth_basic_moduleをLoadする設定にする
この状態での動作と2.の条件をOFF(Unload)にした状態での動作の結果を以下に記す。
-
初期状態
basic認証用のダイアログが出て、意図通りの認証が出来る -
2.がOFFの状態
basic認証用のダイアログが出て、正しいID/PASSを入れても再度ダイアログが出る
恐らく、basicのダイアログを出す機構はApache(もしくは他のmodule)内にあって、
auth_basic_moduleはIDとPASSのチェックしかしてないんだろう。
後、たなぼた的にわかったことは、LoadModule行の変更(少なくともauth_basic_module)はreloadでもできたということ。