Translate

2015年8月20日木曜日

Subversion + Apache HTTP Server + WebDav で FreeIPA を認証に使用する




最近の若い人たちは 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\hoststower.hara2.localのエントリを追加してやればよい。



というわけでめでたくFreeIPAのUIで管理するようになったのだけど、
FreeIPAの画面って結構リッチというか使っていない属性が結構あるから
まようかもなあ..


0 件のコメント:

FloydHubを使ってKerasのサンプル lstm_text_generation.py を動かしてみる

タイムラインにふらっと入ってきた記事で FloydHubというものを知った。 FloydHub https://www.floydhub.com/ Heroku風の機械学習環境のPaaSとのこと。 .. そもそもHeroku知らない んですけど..というかPyth...