Я установил на свой сервер bugzilla и subversion. Я бы хотел, чтобы они поделились аккаунтами. Итак, я погуглил и нашел этот пост Вот. Я установил mod_auth_mysql, применив патч для apache 2.2.3, но он не работает. При просмотре журналов ошибок моего Apache я обнаружил несоответствие пароля: / Предположим, у меня есть такой пользователь в bugzilla:
test@test.com, пароль: test1234
Когда я пытаюсь войти в репозиторий SVN, всплывают формы входа, но я не могу войти. В журнале ошибок сервера я нахожу:
[Sat Dec 18 15:25:10 2010] [error] [client 83.4.164.217] user test@test.com: password mismatch: /svn
Я также отлаживаю запросы mysql, которые отправляются на сервер, и обнаружил следующее:
101218 15:25:10 85 Connect bugs@localhost on
85 Init DB bugs
85 Query SELECT cryptpassword, length(cryptpassword) FROM profiles WHERE login_name='test@test.com' AND disabledtext = ''
Когда я запустил тот же запрос вручную, я получил следующий результат:
mysql> SELECT cryptpassword, length(cryptpassword) FROM profiles WHERE login_name='test@test.com' AND disabledtext = '';
+--------------------------------------------------------------+-----------------------+
| cryptpassword | length(cryptpassword) |
+--------------------------------------------------------------+-----------------------+
| Jnm2qVBMbifU7PEZyl+exbYEAsO8SZh1x2ratGhqfikMg1bxYFg{SHA-256} | 60 |
+--------------------------------------------------------------+-----------------------+
1 row in set (0.00 sec)
И мой в моем apache conf:
<Location /svn >
DAV svn
SVNPath /etc/subversion
AuthzSVNAccessFile /home/yuri/.svncontrol
AuthType Basic
AuthMySQLSaltField <>
AuthName "Mwuahahaha this is protected!"
AuthMySQLPwEncryption crypt
AuthMySQLUser bugs
AuthMySQLPassword <some_pass>
AuthMySQLDB bugs
AuthMySQLUserTable profiles
AuthMySQLNameField login_name
AuthMySQLPasswordField cryptpassword
AuthMySQLUserCondition "disabledtext = ''"
Require valid-user
</Location>
Тот же конфиг, но без AuthMySQLPwEncryption crypt
и AuthMySQLSaltField <>
линии дают ту же проблему
Алгоритм шифрования mod_auth_mysql использует формат хэша, отличный от формата Bugzilla, например. пароль шифрования SHA-256 будет выглядеть так:
$5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6
Кроме того, маловероятно, что ваш дистрибутив Linux предоставляет команду crypt с алгоритмом sha-256. mod_auth_mysql использует для этого функцию crypt библиотеки c.
Лучше всего переключить Bugzilla на менее безопасный алгоритм шифрования (md5) и установить вместо него mod_auth_mysql:
AuthMySQLPwEncryption md5