正直一週間も悩んでいないのだけれど、ひたすらに長かった気がする。
まずは結論から。
Apacheにも、aprにも問題はなし。
AuthName を単独で.htaccessに出していたのがまずかった。
他のディレクティブは全アカウント共通なので、ルートとなるディレクトリの Directoryディレクティブに書いていたのだけれど、これではダメで、(9)Bad file descriptor: Could not open password file: (null) の悪夢がやってくる。
結果として、httpd.confと.htaccessは以下のようになった。
## .htaccess ##
AuthType Digest
AuthName “hoge”
AuthDigestProvider dbd
Require valid-user
## httpd.conf ##(いろいろ端折ってるけど)
# .htaccess Allow
AllowOverride AuthConfig
# allow
Order deny,allow
allow from all
# Auth DB query
AuthDBDUserRealmQuery
“SELECT md5( username || ‘:’ || $2 || ‘:’ || password )
FROM user_list WHERE username = %s AND realm = %s”
これで、無事に認証が通った。
結局やりたかった事というのは、
1、WebのGUIでアカウント登録
2、PostgreSQLのアカウント情報DBに書き込み
3、アカウント用にSubversionのリポジトリを作成
4、httpsの通信用にアカウント情報を含む.htaccessを作成
5、再起動なしに動的に追加したSubversionのリポジトリをmod_dav_svn経由で利用(この時DBのアカウント情報利用)。
という事だったりする。
まぁ、現状アカウント名=Realm名になってるので今ひとつセキュアさには欠けるが。
Realm名でSubversionのリポジトリのアクセスを分けているので、Digest認証は必須だったんだよなぁ。
ともあれ、この結論に達するまでに支払った代償は大きい。
連休3日と、Web鯖の全データだもの……
ここまで書いて、リポジトリ名はアカウント名とは別にしたくなってきた。
でも、Web鯖復旧(という名のフルスクラッチ作り直し)のが先なのでしばらく放置。
なので、公開もしばらく後。
ところで、気の向くままに作ったのはいいのだけれど、これ、需要あるんかな……
コメントを残す