最近の若い人たちは UNIX をさわろうとしない。
なのでSubversionをWebDAV経由で使用させるときの
ユーザID、パスワード管理をhtpasswdコマンドでやらせようとしたら、
結構な力で拒否られそう..
そうならないようにユーザID、パスワードを管理する
Web UI を提供してやらなきゃならないのだけど..
で、考えた挙句 FreeIPA のWeb UIを使わせて
パスワード管理させ、
Subversion+WebDAV側はBASIC認証をやめて
FreeIPA側の認証機能を使わせようと考えた。
FreeIPAは認証にKerberos、認可にLDAP(OpenLDAP)を使っているので、
最初にApacheのモジュールとしてmod_ldapを追加する必要がある。
CentOS7なら、yum -y mod_ldapしておく。
で /etc/httpd/conf.modules.d/10-subversion.conf (CentOS7でyumをつかってmod_dav_svnを入れた場合) を
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
LoadModule dontdothat_module modules/mod_dontdothat.so
##
#Alias /svn /var/www/svn<Location /svn>
DAV svn
SVNParentPath /var/www/svn/
AuthType Kerberos
AuthName "Kerberos Login"
KrbMethodNegotiate on
KrbMethodK5Passwd on
KrbServiceName HTTP
KrbAuthRealms HARA2.LOCAL
Krb5KeyTab /etc/httpd/conf/ipa.keytab
KrbSaveCredentials on
AuthLDAPUrl ldap://tower.hara2.local/dc=hara2,dc=local?krbPrincipalName
Require valid-user
</Location>
と書き換えてsystem restart httpd.serviceすればOK。
ちなみにKerberos認証ではなくすべてBASIC(LDAP)認証したい場合は、Location要素内を以下のようにすればよい。
2015/09/18追記:<注意>
以下の設定ではFreeIPA側で無効化したアカウントでもSubversionにアクセスできてしまうことがわかりました。Kerberos側(上)の方を使用してください。
<Location /svn>
DAV svn
SVNParentPath /var/www/svn
AuthType Basic
AuthName "WebPot Collaboration Login(LDAP)"
AuthBasicProvider ldap
AuthLDAPURL ldap://tower3.webpot.local/cn=users,cn=compat,dc=webpot,dc=local?uid?sub?(objectClass=*)
Require ldap-filter objectClass=posixAccount
</Location>
もしDNSにtower.hara2.localが入っていないSubversionクライアントPCの場合はWindows\System32\drivers\etc\hostsにtower.hara2.localのエントリを追加してやればよい。
というわけでめでたくFreeIPAのUIで管理するようになったのだけど、
FreeIPAの画面って結構リッチというか使っていない属性が結構あるから
まようかもなあ..
0 件のコメント:
コメントを投稿