Subversion与BugZilla共享账户问题

Subversion与BugZilla共享账户问题

我在服务器上安装了 Bugzilla 和 Subversion。我想让它们共享帐户。所以我在 Google 上搜索并找到了这篇文章这里。我安装了 mod_auth_mysql,应用了 apache 2.2.3 补丁,但它不起作用。当我查看我的 apache 错误日志时,我发现密码不匹配 :/ 假设我在 bugzilla 中有一个这样的用户:

[电子邮件保护],密码:test1234

当我尝试进入我的 SVN 存储库时,登录表单弹出,但我无法登录。在服务器错误日志中我发现:

[Sat Dec 18 15:25:10 2010] [error] [client 83.4.164.217] user [email protected]: 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='[email protected]' AND disabledtext = ''

当我手动运行相同的查询时,我得到以下结果:

mysql> SELECT cryptpassword, length(cryptpassword) FROM profiles WHERE login_name='[email protected]' AND disabledtext = '';
+--------------------------------------------------------------+-----------------------+
| cryptpassword                                                | length(cryptpassword) |
+--------------------------------------------------------------+-----------------------+
| Jnm2qVBMbifU7PEZyl+exbYEAsO8SZh1x2ratGhqfikMg1bxYFg{SHA-256} |                    60 |
+--------------------------------------------------------------+-----------------------+
1 row in set (0.00 sec)

我的 apache 配置如下:

<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 cryptAuthMySQLSaltField <>行,会出现同样的问题

答案1

mod_auth_mysql 的加密算法使用与 Bugzilla 不同的哈希格式,例如加密 SHA-256 密码将如下所示:

$5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6

除此之外,您的 Linux 发行版不太可能提供带有 sha-256 算法的 crypt 命令。mod_auth_mysql 使用 c 库的 crypt 函数来执行此操作。

最好的办法可能是将 Bugzilla 切换到不太安全的加密算法 (md5),然后设置 mod_auth_mysql 来使用该算法:

AuthMySQLPwEncryption md5

相关内容