zoukankan      html  css  js  c++  java
  • svn 集成 redmine 账户验证的终极解决方案

    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
  • 相关阅读:
    C#动态调用WCF接口(2)
    WCF 动态调用(1)
    WCF信道工厂Channel Factory
    使用 ObjectDataSource 缓存数据
    DatabaseFactory.CreateDatabase 方法操作数据库
    大学毕业4年-回想和总结(5)-投资理財方法论
    用递归法将一个整数n转换成字符串。
    朴素贝叶斯
    Android热补丁技术—dexposed原理简析(阿里Hao)
    SQLAlchemy使用笔记--SQLAlchemy ORM(三)
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154301.html
Copyright © 2011-2022 走看看