mod_dbdを使ったApacheの認証をPostgreSQLのDBにやらせようと画策している。
今作っているWebページは、登録制でメンバー以外のアクセスを弾く必要があるのだけれど、いちいちBasic認証と.htacsessで弾くのは面倒だし、それに今ひとつ美しくない。
ユーザ情報はDBに持たせるべきなのだ。
閑話休題。
で、Digest認証を挿せようとして以下のコンフィグを書いた。
AuthName だけはRealmを動的に生成させる必要があったので、.htaccessに逃がしている。
DBDriver pgsql
DBDParams “host=xxx.xxx.xxx.xxx dbname=xxxxx user=xxxxxxxx password=xxxxxxx”
DBDMin 2
DBDKeep 8
DBDMax 20
DBDExptime 300
# Authorization
AuthType Digest
AuthDigestProvider dbd
Require valid-user
が、
(9)Bad file descriptor: Could not open password file: (null)
というエラーメッセージが出てきて500エラーになって認証が失敗する。
ちなみに、適当に作った AuthUserFile を指定してファイルで認証させるとうまくいく。
が、AuthDigestProvider dbd を完全に無視している様子。
DB見に行って欲しいんだが……
AuthUserFile /dev/null を指定すればいいらしい話もあったのだけれど、
どっちにせよDBを見に行かないので意味がない。
Webで情報を探し、いくつか似たような事象は発見するも、今回の例に一致したものはない様子。
というか、同じhttpd.confで別マシンで試したときは素直に通ったんだよな……
その後の今回のキモのところで詰まったけど……
Apacheを作り直してみたり、aprを作り直してみたり、DBのログとったりで今日一日をほとんどつぶしてしまった。
仕方がないので、今新しく別マシンを立てて環境構築中。
こっちで通ったらモジュールごとコピーしてもってこよう。
コメントを残す