svn 集成 redmine 账户验证的终极解决方案
svn 集成 redmine 账户验证的终极解决方案
动机
对于大部分开发团队来说,一般都需要一套 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 账户验证的终极解决方案的更多相关文章
- jenkins 集成 redmine 账户验证的方案
jenkins 集成 redmine 账户验证的方案 赖勇浩(http://laiyonghao.com) 动机 Jenkins 是最著名的持续集成工具,又因为它开源免费.插件众多,成为了许多团队做持 ...
- 微信公众号开发者中心配置 Token验证失败 终极解决方案
请您检查这几项: 1. 在您的URL(服务器地址)页面里,直接Get获取echostr参数打印到页面上. 在火狐浏览器里Firebug里面看到echostr前面多了几个乱码. 把您开发者设置的URL页 ...
- 无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份验证
----注意:以管理员身份运行VS C#中ASP.NET Web应用程序编译时的错误:无法在web服务器上启动调试.调试失败,因为没有启用集成windows身份验证. 解决:打开IIS,在IIS里查看 ...
- Cygwin 各种情况下中文乱码--终极解决方案
0.引言 本人从进公司以来一直负责公司Android平台下产品的NDK开发,用的工具: 01. Google的adt-bundle(集成了eclipse和sdk) 02. NDK 03. Cygwin ...
- Sqlite && EF Code FIRST 终极解决方案 2019.5.17
Sqlite && EF Code FIRST 终极解决方案 2019.5.17 包括根据模型自动生成数据库,初始化数据,模型改变时的自动数据迁移等 2019.12.25 更新 支持E ...
- Eclipse不自动编译java文件的终极解决方案
最近我的eclipse经常犯傻,项目中总是有很多,启动项目也是没有启动类.查了下项目中生成的class文件,我靠竟然没有,或者还是以前的.原来是eclipse犯傻了,它没帮我自动编译java文件.一般 ...
- 【转】JSP中文乱码问题终极解决方案
原文地址:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的 ...
- Xcode-调试断点不能停在代码区终极解决方案
转发 调试断点不能停在代码区终极解决方案: http://mobile.51cto.com/iphone-390082.htm
- VIM、GVIM在WINDOWS下中文乱码的终极解决方案
文章转自:http://www.liuhuadong.com/archives/68 vim.gvim在windows下中文乱码的终极解决方案在windows下vim的中文字体显示并不好,所以我们需要 ...
随机推荐
- 使用word
同样这也是生活中常用到的办公软件,word本质是一个排版软件,它与一般的编辑器不同的是,它将整个文本分成了一页一页的,当然这也是方便于打印文档. 使用word还是很容易的,一般来说需要注意以下几方面的 ...
- BookNote: Refactoring - Improving the Design of Existing Code
BookNote: Refactoring - Improving the Design of Existing Code From "Refactoring - Improving the ...
- SpringMVC mock测试详解
@RunWith(SpringRunner.class) @SpringBootTest(classes = WebmanagerApplication.class) //配置事务的回滚,对数据库的增 ...
- Java HashMap的扩容
最近博主参加面试,发现自己对于Java的HashMap的扩容过程理解不足,故最近在此进行总结. 首先说明博主德Java为1.8版本 HashMap中的变量 首先要了解HashMap的扩容过程,我们就得 ...
- 文件上传,服务端压缩文件方法,重点是png与gif图片的压缩,保证了透明度与动画
/// <summary> /// 上传文件帮助类 /// </summary> public class ImageUploadHelper { #region SaveVi ...
- 一个任务:(小甲鱼python视频第29讲) 代码整理与总结
任务:将文件(record.txt)中的数据进行分割,并安装以下规则保存起来. 1.小甲鱼的对话单独保存为boy_*.txt的文件(去掉"小甲鱼:") 2.小客服的对话单独保存 ...
- Spring错误之org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'bookService' is expected to be of type 'pw.fengya.tx.BookService' but was actually of type 'com.sun.proxy.$Proxy1
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cas ...
- 初始化openresty开发环境
参考链接 https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-14-04 初始化git ...
- MVP框架 – Ted Mosby的软件架构
作者:Hannes Dorfmann 原文链接 : Ted Mosby – Software Architect 文章出自 : Android开发技术前线 译者 : Mr.Simple 我给这篇关于A ...
- Spring Boot 中应用Spring data mongdb
摘要 本文主要简单介绍下如何在Spring Boot 项目中使用Spring data mongdb.没有深入探究,仅供入门参考. 文末有代码链接 准备 安装mongodb 需要连接mongodb,所 ...