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. curl_multi实现并发

    普通请求 curl_normal.php <?php $srart_time = microtime(TRUE); $chArr=[]; //创建多个cURL资源 for($i=0; $i< ...

  2. MySQL数据库将多条记录的单个字段合并成一条记录

    原SQL AND acc.id = accRole.acc_id) AND accRole.role_id = T_PM_ROLE.id ORDER BY acc.id 结果,有一个人有两个角色,如果 ...

  3. log4j不生成日志文件的问题

    直接看我的注解吧 注意地址的斜杠,还有地址别写什么相对地址了,这包太老了,服务器update一下兼容问题就出来了. #第一个参数定义达到什么程度就输出 第二第三....第N 定义输出的类型 #debu ...

  4. Node.js JXcore 打包

    Node.js 是一个开放源代码.跨平台的.用于服务器端和网络应用的运行环境. JXcore 是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线 ...

  5. Go 语言循环语句

    在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句. 以下为大多编程语言循环程序的流程图: Go 语言提供了以下几种类型循环处理语句: 循环类型 描述 for 循环 重复执 ...

  6. JAVA Eclipse使用Maven构建web项目详解(SSM框架)

    tips: 启动项目后,welcome-file的链接即为测试用例 部署maven web项目 Eclipse使用Maven构建web项目详解 pom.xml添加webapp依赖: <depen ...

  7. Android Multimedia框架总结(二十五)MediaProjection实现手机截屏(无须root)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53966818 前言:一年半多以前 ...

  8. 好IT男不能“淫”-谈IT人员目前普遍存在的“A情绪”

    <如果当道德无法约束你的时候...那么就让对疾病的恐惧来制约你吧> 前言 在写这篇文章前我的心情无比的沉重.几次提笔欲写,几次又未能完成,可是最终让我"奋笔疾书"的原因 ...

  9. 20160209.CCPP体系详解(0019天)

    程序片段(01):01.字符串.c 内容概要:字符串 #include <stdio.h> #include <stdlib.h> #include <locale.h& ...

  10. Compile C++ code in Matlab with OpenCV support

    Provides a function named as "mex_opencv(src)" The code function mex_opencv(src) ARC = 'x6 ...