Ubuntu下Subversion集成Redmine用户认证
事实上,没有什么事比这件更让人上火。在此之前,一切如此顺利,apt-get和少有的几个小修改就可以解决,而且Google之后可以得来的资料非常丰富。这一件呢?搜索出来的结果居然会导致配置错误。
话说要完成集成认证,首先要安装这个模块libapache2-mod-auth-mysql,因为我安装的Redmine后台使用的是mysql,如果postgresql或sqlite,那就自行找相关的模块吧。
sudo apt-get install libapache2-auth-mysql
创建视图:
CREATE VIEW users_auth_external AS
SELECT u.login AS username,
u.hashed_password AS passwd,
GROUP_CONCAT(p.identifier) AS groups
FROM `members` m
INNER JOIN users u ON m.user_id = u.id
INNER JOIN projects p ON m.project_id = p.id
WHERE u.status = 1
GROUP BY username
配置:
下面列出了两种配置方式,新版本是我在Ubuntu 10.10下缺省使用apt-get安装后可用的版本,但是搜索一般得来的结果以第一种居多(最恶的是在这个模块sourceforge的主站上得到的居然是老版本的内容):
| # | 老版本 | 新版本 |
| # | AuthMySQLEnable On
AuthMySQLHost 192.168.xxx.xxx AuthMySQLUser redmine AuthMySQLPassword redmine_password AuthMySQLDB redmine087 AuthMySQLUserTable “users, members” #注意这儿跟上不一样 AuthMySQLNameField login AuthMySQLPasswordField hashed_password AuthMySQLPwEncryption sha1 |
AuthMySQL On
AuthMySQL_Authoritative on AuthMySQL_Host localhost AuthMySQL_DB my_database AuthMySQL_User my_database_user AuthMySQL_Password my_database_password AuthMySQL_Password_Table users_auth_external AuthMySQL_Group_Table users_auth_external AuthMySQL_Username_Field username AuthMySQL_Password_Field passwd AuthMySQL_Group_Field groups AuthMySQL_Encryption_Types SHA1Sum |
经常搞不懂这种修改有什么意义。因为看起来就是改变了名字而已。也许是开发人员的习惯或者本尊更换以致于见不得不同风格的内容,但是这种变化给人带来的不便却是显而易见的。即便是开源软件,即便是施福于人的东西,这种变更也让人心生不满。虽然渐近不惑,惑日渐多。不过也容易明白,有时候自己也会做错事。或许不惑之说无外乎警醒我们年华已逝,剩下的时间多干点正事儿吧,又或许是说你想怎么干就怎么干,爽才是真正的不惑吧。
参照:
1. 使用Apache为subversion做出认证
2. Authenticate Apache against Redmine with AuthMySQL
3. libapache2-auth-mysql主站
