Windows環境のRedmineでMySQLサーバの認証と連携したい
BITMANI(http://bitnami.org/stack/redmine)のお陰で、WindowsサーバにもRedmine環境を簡単に構築できるようになりました。
そこで、しばらくRedmineを運用してみようと思います。(一人プロジェクトの運用ですが。。。)
プロジェクトを作成してみて、ふと思ったのが、Subversionとの連携はどうなっているのだろうかという点でした。
TracLightningの場合、プロジェクトを作成すると、そのプロジェクトのIDでリポジトリを作成してくれて、
ユーザIDとパスワードの紐付けも自動で行われます。
さて、Redmineはどうなのかと言えば、自動ではありませんでした。
ひょっとしたら、どこかに便利なPluginがあるのかも知れませんが、初期状態では自分でsvnadminコマンドを打ち込み、
リポジトリを作成するようです。
とはいっても、以下の一行で済みますが。。。
さらに、Apacheの設定(http.conf)も手動で行います。
svnadmin create /path/to/repository
問題は、ユーザIDとパスワードの紐付けをどうするのかなと。。。
Webを検索するとmod_auth_mysqlを使用すれば良いということなので、
SourceForge(http://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で立ち上げた環境は、
でした。ちなみにこの環境にApache2.0のmod_auth_mysqlを設定してみると、確かにApacheが起動しません。
Server version: Apache/2.2.17 (Win32)
Server built: Oct 18 2010 01:58:12
仕方なく情報の少ない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認証の場合、ダイアログに入力されたパスワードをそのまま平分でデータベースに問い合わせしているということです。
Redmineはsha1でハッシュ化したパスワードを保存するので、どうやっても不一致な訳です。
Apache2.0まで対応していたmod_auth_mysqlでは、sha1を普通にサポートしていたので、盲点でした。。。
さて、、、これはソースコードを書き換えてWindows環境でコンパイルしなければならない!?
とりあえず、もう少し調べてみます。。。
これは解決しておかないと、Windows環境では社内展開難しいですね。。。やはりLinux環境ですかね。。。。