Project

General

Profile

SubversionにRedmineの認証を連携する » History » Version 1

Hidehisa Matsutani, 11/27/2015 11:41 PM

1 1 Hidehisa Matsutani
h1. SubversionにRedmineの認証を連携する
2
3
SubversionとRedmineの認証連携ができると、Redmineのユーザ/パスワードでSubversionにコミットできます。
4
いろいろと試行錯誤した結果、無事連携できたので、ノウハウをまとめておきます。
5
6
h2. 前提条件
7
8
* Bitnami Redmine を利用
9
* サーバはCentOS
10
* Bitnamiのインストールフォルダは/opt/redmine-3.0.3-0
11
12
13
h2. mod_auth_mysqlのインストール
14
15
<pre>
16
    # yum install mod_auth_mysql
17
</pre>
18
19
h2. Redmine に同梱されている Redmine.pm を Perl の実行パスへシンボリックリンク
20
21
<pre>
22
    # mkdir -p /opt/redmine-3.0.3-0/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi/Apache/Authn
23
    # ln -s /opt/redmine-3.0.3-0/apps/redmine/htdocs/extra/svn/Redmine.pm /opt/redmine-3.0.3-0/perl/lib/site_perl/5.16.3/x86_64-linux-thread-multi/Apache/Authn
24
</pre>
25
26
h2. デフォルトの権限設定を記述
27
28
<pre>
29
    # vi /opt/redmine-3.0.3-0/repos/svnauthz
30
</pre>
31
32
<pre>
33
# common settings
34
[/]
35
admin = rw
36
* = rw
37
guest = r
38
</pre>
39
40
h2. httpd.confに以下を追加
41
42
<pre>
43
    # vi /opt/redmine-3.0.3-0/apache2/conf/httpd.conf
44
</pre>
45
46
<pre>
47
Include conf/extra/httpd-svn.conf
48
</pre>
49
50
51
h2. mod_auth_mysql.so の作り直し
52
53
54
h3. BitNami Redmine Stack に同梱されている Apache 2.4 では API がいくつか変更されたらしいので、パッチをあてます。
55
56
https://osdn.jp/projects/sfnet_modauthmysql/
57
から、mod_auth_mysql-3.0.0.tar.gzをダウンロードします。
58
59
http://sourceforge.net/p/modauthmysql/patches/13/
60
のパッチを当てて、mod_auth_mysql.so を作り直します。
61
この作業では gcc がインストールされている必要があります。
62
63
<pre>
64
    # tar xzvf mod_auth_mysql-3.0.0.tar.gz
65
    # patch -p0 < mod_auth_mysql_3.0.0_patch_apache2.4.diff
66
    # cd mod_auth_mysql-3.0.0/
67
    # /opt/redmine-3.0.3-0/use_redmine
68
    # apxs -c -L/opt/redmine-3.0.3-0/mysql/lib -I/opt/redmine-3.0.3-0/mysql/include -lmysqlclient -lm -lz mod_auth_mysql.c
69
    # apxs -i mod_auth_mysql.la
70
</pre>
71
72
h3. ユーザテーブルにsaltが追加されたが、mod_auth_mysqlがRedmineのsaltの掛け方に対応していないので、パッチをあてます
73
74
(参考) http://d.hatena.ne.jp/vmi/20111102/p1 
75
パッチは http://www.redmine.org/boards/2/topics/24386?r=25722#message-25722 からダウンロードします。
76
77
<pre>
78
    # patch -p0 < mod_auth_mysql-3.0.0-redmine.patch
79
    # cd mod_auth_mysql-3.0.0/
80
    # /opt/redmine-3.0.3-0/use_redmine
81
    # apxs -c -L/opt/redmine-3.0.3-0/mysql/lib -I/opt/redmine-3.0.3-0/mysql/include -lmysqlclient -lm -lz mod_auth_mysql.c
82
    # apxs -i mod_auth_mysql.la
83
</pre>
84
85
h2. httpd-svn.confを作成します。
86
87
* Subversion に WebDAV 経由でアクセスできるようにします
88
89
* access_handler にバグがあるらしいのでコメントアウトしています。
90
(参考) http://sc1h5r.cswiki.jp/index.php?Subversion%E3%81%AEApache%E7%B5%8C%E7%94%B1%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%AE%E8%A8%AD%E5%AE%9A
91
92
* http://d.hatena.ne.jp/vmi/20111102/p1
93
によりユーザテーブルにsaltが追加されたことの設定を追加しています。
94
95
* {DB_password}{port}は適宜インストール環境に合わせて読み替えてください。
96
97
<pre>
98
    # vi /opt/redmine-3.0.3-0/apache2/conf/extra/httpd-svn.conf
99
</pre>
100
101
<pre>
102
LoadModule perl_module modules/mod_perl.so
103
PerlLoadModule Apache::Authn::Redmine
104
105
<Location /svn>
106
  DAV svn
107
  SVNParentPath "/var/svn"
108
  AuthType Basic
109
  AuthName Subversion
110
  Require valid-user
111
  AuthUserFile /dev/null
112
  AuthBasicAuthoritative Off
113
  AuthMySQLAuthoritative On
114
# my.cnfの設定に合わせて変更
115
  AuthMySQLSocket /opt/redmine-3.0.3-0/mysql/tmp/mysql.sock
116
# Redmineのdatabase.ymlの設定に合わせて変更
117
  AuthMySQLHost localhost
118
  AuthMySQLUser bitnami
119
  AuthMySQLPassword {DB_password}
120
  AuthMySQLDB bitnami_redmine
121
### Redmineのテーブルとの紐付け
122
# Redmineのユーザテーブル
123
  AuthMySQLNoPasswd Off
124
  AuthMySQLUserTable users
125
  AuthMySQLNameField login
126
  AuthMySQLPasswordField hashed_password
127
  AuthMySQLSaltField salt
128
  AuthMySQLPwEncryption sha1-rm
129
# グループの設定。プロジェクト識別子をグループとして扱う
130
  AuthMySQLGroupTable "users, members, projects"
131
  AuthMySQLGroupCondition "users.id = members.user_id and projects.id = members.project_id"
132
  AuthMySQLGroupField "projects.identifier"
133
134
  AuthzSVNAccessFile /opt/redmine-3.0.3-0/repos/svnauthz
135
  #PerlAccessHandler Apache::Authn::Redmine::access_handler
136
  PerlAuthenHandler Apache::Authn::Redmine::authen_handler
137
138
  RedmineDSN "DBI:mysql:database=bitnami_redmine;host=localhost:{port};mysql_socket=/opt/redmine-3.0.3-0/mysql/tmp/mysql.sock"
139
  RedmineDbUser "bitnami"
140
  RedmineDbPass "{DB_password}"
141
</Location>
142
143
</pre>
144
145
h2. Redmineを再起動します。
146
147
<pre>
148
# /opt/redmine-3.0.3-0/ctlscript.sh restart
149
</pre>
150
151
h2. Redmineのユーザ/パスワードでSubversionのコミットができれば成功です。