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のログとったりで今日一日をほとんどつぶしてしまった。

仕方がないので、今新しく別マシンを立てて環境構築中。
こっちで通ったらモジュールごとコピーしてもってこよう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です