[i=s] 本帖最后由 scmroad 于 2013-8-28 10:51 编辑
赖勇浩(http://laiyonghao.com) [b] 动机 [/b]
对于大部分开发团队来说,一般都需要一套 SCM 系统,通常是 svn + redmine,有些还会有 reviewboard 之类的。 大家当然不希望上三套系统就有三套账号密码,那样记忆起来太麻烦了,所以大家都希望有统一的验证方案,当然,LDAP 是一种选择,考虑到它部署起来比较难,成本比较高,一般会选择统一使用其中某一个系统的账户验证。 redmine 是没有办法使用 svn 的账户验证的,所以大家只好选择 svn 使用 redmine 的账户验证。但是新版本 redmine 使用了 salt 字段加密,又是 sha1 算法计算 hMAC,所以 mod_auth_mysql 就挂了。网上能够搜索到的一般有以下几个
[b] 方案 [/b]:
显然,需要一个不需要改代码的终极解决方案。
另,因为提供了 hook 机制,reviewboard 使用 redmine 的账户验证倒是容易。 redmine-auth redmine-auth 利用了 apache2 中提供的 AuthProvider 特性和 mod_wsgi WSGIAuthUserScript 特性,编写了一个读取 redmine 账户信息的脚本,实现账户验证。 得益于 redmine-auth 使用了 web.py 的 database orm,只要 web.py 支持的数据库,redmine-auth 都可以读取。所以无论 redmine 使用的是 MySQL 还是 postgresql,甚至是 oracle/mssql/sqlite,都可以无缝地使用 redmine-auth 进行账户验证。
[b] 安装 [/b]
很简单,运行使用: pip install -U redmine-auth 它会自动安装依赖的 web.py,但是数据库驱动需要你手动安装,比如 MySQLdb 需要你自行安装好。 [b] 配置 [/b]
redmine-auth 提供了一个小程序用以生成 wsgi 验证脚本,运行命令: redmine-auth -g /opt/redmine_auth.wsgi 回头几个关于 redmine 使用的数据库相关的问题,一个可以运行的 wsgi 脚本就生成到指定的位置了。 然后配置一下你的 apache2 site config 文件。让它看起来像这样:
然后重启你的 apache2 就可以了。
[b] 其它 [/b] redmine-auth 是一个 MIT 授权的开源项目,主页:https://github.com/laiyonghao/redmine-auth