Windows環境のRedmineでMySQLサーバの認証と連携したい

BITMANI(http://bitnami.org/stack/redmine)のお陰で、WindowsサーバにもRedmine環境を簡単に構築できるようになりました。
そこで、しばらくRedmineを運用してみようと思います。(一人プロジェクトの運用ですが。。。)

プロジェクトを作成してみて、ふと思ったのが、Subversionとの連携はどうなっているのだろうかという点でした。
TracLightningの場合、プロジェクトを作成すると、そのプロジェクトのIDでリポジトリを作成してくれて、
ユーザIDとパスワードの紐付けも自動で行われます。
さて、Redmineはどうなのかと言えば、自動ではありませんでした。
ひょっとしたら、どこかに便利なPluginがあるのかも知れませんが、初期状態では自分でsvnadminコマンドを打ち込み、
リポジトリを作成するようです。
とはいっても、以下の一行で済みますが。。。


svnadmin create /path/to/repository
さらに、Apacheの設定(http.conf)も手動で行います。


問題は、ユーザIDとパスワードの紐付けをどうするのかなと。。。
Webを検索するとmod_auth_mysqlを使用すれば良いということなので、
SourceForgehttp://sourceforge.net/projects/modauthmysql/files/)から最新をダウンロードしてきましたが、
これは、ソースコードしかありません。。。
もう少し検索を行うと、http://www.gknw.net/development/apache/ というサイトを発見。
「unofficial」とのことですが、取り合えずダウンロードしてみようと思ったところ、サイトに圧倒的に記述があるモジュールは、
mod_auth_mysql
なのですが、これはApache2.0までで、Apache2.2以降は
mod_authn_mysql
となるようです。ここら辺については、@IT(http://www.atmarkit.co.jp/flinux/special/apache22/apache01.html)が詳しかったです。
BITNAMIで立ち上げた環境は、


Server version: Apache/2.2.17 (Win32)
Server built: Oct 18 2010 01:58:12
でした。ちなみにこの環境にApache2.0のmod_auth_mysqlを設定してみると、確かにApacheが起動しません。
仕方なく情報の少ないmod_authn_mysqlで行うしかないようです。
試行錯誤の結果、以下のようなhttp.confで起動することができました。

# Configuration for mod_authn_mysql
<IfModule mod_authn_mysql.c>
    AuthnMySQLDBHost SRV1 localhost
    AuthnMySQLDBHost SRV1 localhost
    AuthnMySQLDBUsername SRV1 bitnami
    AuthnMySQLDBPassword SRV1 hogehoge
    AuthnMySQLDB SRV1 bitnami_redmine
    AuthnMySQLTable SRV1 users
    AuthnMySQLUsernameField SRV1 login
    AuthnMySQLPasswordField SRV1 hashed_password
    AuthnMySQLIsActiveField SRV1 status
    AuthnMySQLConnMin SRV1 3
    AuthnMySQLConnSoftMax SRV1 12
    AuthnMySQLConnHardMax SRV1 20
    AuthnMySQLConnTTL SRV1 600

    <Location /restricted>
        AuthName "MySQL Secured Place"
        AuthType Basic
        AuthBasicProvider mysql
        AuthnMySQLServerConfig SRV1
        require valid-user
    </Location>
</IfModule>
# End of mod_authn_mysql.

<Location /svn>
   DAV svn
   SVNParentPath G:/BitNami/repo

   AuthName "MySQL Secured Place"
   AuthType Basic
   AuthBasicProvider mysql
   AuthnMySQLServerConfig SRV1
   require valid-user
</Location>

さて、いよいよブラウザで起動してみると、きちんとユーザIDとパスワードを聞いてきました。

ところが、、、、認証エラーとなってしまいます。
apacheのログを見ると


[Mon Nov 22 17:44:42 2010] [error] [mod_authn_mysql.c] MySQL Connection to mysql://bitnami@localhost/bitnami_redmine Failed: (本当は改行なし)
Client does not support authentication protocol requested by server; consider upgrading MySQL client
と出ています。
こんなのがヒットしました。(http://dev.mysql.com/doc/refman/5.0/en/old-client.html
MySQLサーバにコンソールログイン(rootで)して、この通りに、

SET PASSWORD FOR 'bitnami@localhost' = OLD_PASSWORD('hogehoge');
と打ったところ、今度はエラーメッセージが変わりました。効果があったようです。


[Mon Nov 22 18:07:50 2010] [error] [client 192.168.10.1] user admin: authentication failure for "/svn/TestProject": Password Mismatch

どうやら、今度は本当にパスワードが間違っているようです。
途方に暮れたので、仕方なくmod_authn_mysqlソースコードを覗いてみることにしました。
覗いてみて分かったのは、どうやらBasic認証の場合、ダイアログに入力されたパスワードをそのまま平分でデータベースに問い合わせしているということです。
Redminesha1でハッシュ化したパスワードを保存するので、どうやっても不一致な訳です。
Apache2.0まで対応していたmod_auth_mysqlでは、sha1を普通にサポートしていたので、盲点でした。。。

さて、、、これはソースコードを書き換えてWindows環境でコンパイルしなければならない!?
とりあえず、もう少し調べてみます。。。
これは解決しておかないと、Windows環境では社内展開難しいですね。。。やはりLinux環境ですかね。。。。