svn 集成 redmine 账户验证的终极解决方案

赖勇浩(http://laiyonghao.com

动机

对于大部分开发团队来说,一般都需要一套 SCM 系统,通常是 svn + redmine,有些还会有 reviewboard 之类的。

大家当然不希望上三套系统就有三套账号密码,那样记忆起来太麻烦了,所以大家都希望有统一的验证方案,当然,LDAP 是一种选择,考虑到它部署起来比较难,成本比较高,一般会选择统一使用其中某一个系统的账户验证。

redmine 是没有办法使用 svn 的账户验证的,所以大家只好选择 svn 使用 redmine 的账户验证。但是新版本 redmine 使用了 salt 字段加密,又是 sha1 算法计算 hMAC,所以 mod_auth_mysql 就挂了。网上能够搜索到的一般有以下几个方案:

1. 给 mod_auth_mysql 打补丁,见:http://www.redmine.org/boards/2/topics/24386?r=39269。这个补丁在 Ubuntu Server 10.04 个工作得很好,但在 12.04 就不行了。

2. 改 redmine 的代码,把 salt 机制干掉,见:http://www.jiongsun.com/tag/mod_auth_mysql 。一般人不会选择这种不能升级 redmine 的方案。

3. 给 mod_auth_pgsql2 打补丁,再改 redmine 代码,见:http://digzhu.com/redmine+postgresql+svn%20%E5%AE%9E%E7%8E%B0%E7%BB%9F%E4%B8%80%E7%94%A8%E6%88%B7%E7%AE%A1%E7%90%86.html 。一种让人蛋碎的方案。

显然,需要一个不需要改代码的终极解决方案。

另,因为提供了 hook 机制,reviewboard 使用 redmine 的账户验证倒是容易。

redmine-auth

redmine-auth 利用了 apache2 中提供的 AuthProvider 特性和 mod_wsgi WSGIAuthUserScript 特性,编写了一个读取 redmine 账户信息的脚本,实现账户验证。

得益于 redmine-auth 使用了 sqlalchemy(从 0.2 版本开始),只要 sqlalchemy 支持的数据库,redmine-auth 都可以读取。所以无论 redmine 使用的是 MySQL 还是 postgresql,甚至是 oracle/mssql/sqlite,都可以无缝地使用 redmine-auth 进行账户验证。

安装

很简单,运行使用:

pip install -U redmine-auth

它会自动安装依赖的程序库,但是数据库驱动需要你手动安装,比如 MySQLdb 需要你自行安装好。

配置

redmine-auth 提供了一个小程序用以生成 wsgi 验证脚本,运行命令:

redmine-auth -g /opt/redmine_auth.wsgi

回头几个关于 redmine 使用的数据库相关的问题,一个可以运行的 wsgi 脚本就生成到指定的位置了。
然后配置一下你的 apache2 site config 文件。让它看起来像这样:

<VirtualHost *:1081>

<Location />
  DAV svn
  SVNParentPath /opt/svn

  AuthName "Subversion repository"
  AuthType Basic

  AuthBasicProvider wsgi
  WSGIAuthUserScript /opt/redmine_auth.wsgi

  AuthzSVNAccessFile /opt/svn-authz

  Require valid-user

</Location>

</VirtualHost>

其中最重要的是下面这两行:

  AuthBasicProvider wsgi
  WSGIAuthUserScript /opt/redmine_auth.wsgi

然后重启你的 apache2 就可以了。

其它

redmine-auth 是一个 MIT 授权的开源项目,主页:https://github.com/laiyonghao/redmine-auth

svn 集成 redmine 账户验证的终极解决方案的更多相关文章

  1. jenkins 集成 redmine 账户验证的方案

    jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...

  2. 微信公众号开发者中心配置 Token验证失败 终极解决方案

    请您检查这几项: 1. 在您的URL(服务器地址)页面里,直接Get获取echostr参数打印到页面上. 在火狐浏览器里Firebug里面看到echostr前面多了几个乱码. 把您开发者设置的URL页 ...

  3. 无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证

    ----注意:以管理员身份运行VS C#中ASP.NET Web应用程序编译时的错误:无法在web服务器上启动调试.调试失败,因为没有启用集成windows身份验证. 解决:打开IIS,在IIS里查看 ...

  4. Cygwin 各种情况下中文乱码--终极解决方案

    0.引言 本人从进公司以来一直负责公司Android平台下产品的NDK开发,用的工具: 01. Google的adt-bundle(集成了eclipse和sdk) 02. NDK 03. Cygwin ...

  5. Sqlite && EF Code FIRST 终极解决方案 2019.5.17

    Sqlite && EF Code FIRST 终极解决方案 2019.5.17 包括根据模型自动生成数据库,初始化数据,模型改变时的自动数据迁移等 2019.12.25 更新 支持E ...

  6. Eclipse不自动编译java文件的终极解决方案

    最近我的eclipse经常犯傻,项目中总是有很多,启动项目也是没有启动类.查了下项目中生成的class文件,我靠竟然没有,或者还是以前的.原来是eclipse犯傻了,它没帮我自动编译java文件.一般 ...

  7. 【转】JSP中文乱码问题终极解决方案

    原文地址:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的 ...

  8. Xcode-调试断点不能停在代码区终极解决方案

    转发 调试断点不能停在代码区终极解决方案:  http://mobile.51cto.com/iphone-390082.htm

  9. VIM、GVIM在WINDOWS下中文乱码的终极解决方案

    文章转自:http://www.liuhuadong.com/archives/68 vim.gvim在windows下中文乱码的终极解决方案在windows下vim的中文字体显示并不好,所以我们需要 ...

随机推荐

  1. Xamarin开发缺少的android_m2repository_rxx.zip下载地址以及MD5

    android_m2repository_rxx.zip下载地址以及MD5, 注意:下载后需要改文件名,改为 MD5的值.zip  例如:android_m2repository_r29.zip 需改 ...

  2. EF 6.x、EF Core实现dynamic动态查询和EF Core实现多个上下文实例池你了解多少?

    前言 很长一段时间没有写博客了,今天补上一篇吧,偶尔发现不太愿意写博客了,太耗费时间,不过还是在坚持当中,毕竟或许写出来的东西能帮到一些童鞋吧,接下来我们直奔主题.无论是在在EF 6.x还是EF Co ...

  3. DELL、HP、IBM X86服务器命名规则

    DELL.HP.IBM X86服务器命名规则 各大服务器厂家对于自己的服务器命名都有一定的规则,通常会根据服务器的外观(如塔式.机架式.刀片等).处理器(如Intel或者AMD等).架构等信息来命名. ...

  4. Linux学习之CentOS(八)----文件与目录的默认权限与隐藏权限(转)

    文件与目录的默认权限与隐藏权限 一个文件有若干个属性, 包括读写运行(r, w, x)等基本权限,及是否为目录 (d) 与文件 (-) 或者是连结档 (l) 等等的属性! 要修改属性的方法在前面也约略 ...

  5. Linux sort -n 与 -g 排序对比

    公司业务需要,天天用awk统计数值然后排序,出问题了,如下: count.sh 是一个统计脚本,把awk输出的值按占比.条数.类型 在重新输出 awk -F\| '{print $16}' *MQTT ...

  6. 使用CSS让多出来的字变为省略号

    <style> .text1 { width:200px; overflow:hidden; text-overflow:ellipsis; -o-text-overflow:ellips ...

  7. 【转载】给想要入门渗透的人的忠告——schiz0wcingU

    最近发现很多拥有黑客梦想的年轻人在群里或者论坛里,找"师傅"或者学一些所谓的"社工" 这些找师傅的人当中,有极大一部分人是还在上学的学生,自然也就没有收入来源, ...

  8. 深入理解Oracle中的随机函数

    --Oracle中取随机值的函数 .dbms_random包 dbms_random包提供了一系列的随机值获取函数以及相关存储过程.下面详细讲解常用的函数和过程. ()dbms_random.rand ...

  9. 酷伯伯实时免费HTTP代理ip爬取(端口图片显示+document.write)

    分析 打开页面http://www.coobobo.com/free-http-proxy/,端口数字一看就不对劲,老规律ctrl+shift+c选一下: 这就很悲剧了,端口数字都是用图片显示的: 不 ...

  10. Node.js 网络

    稳定性: 3 - 稳定 net 模块提供了异步网络封装,它包含了创建服务器/客户端的方法(调用 streams).可以通过调用 require('net') 包含这个模块. net.createSer ...