若手がハマっていたので、ビシッと解決した一緒にアレコレやってみたシリーズ。タイトルが長くなってしまったけど、メモっておく。
某所のApache + Subversionサーバで、LDAP認証&ローカルファイル認証を使っていたのですが、LDAPでさらに条件式を追加する必要があった模様。要件はLDAPで特定の"description"を持つユーザを認可したい、と。Apacheのバージョンは2.2系。
アカンかった例
どれどれと見てみたら、下記の様に設定してありました。
<Location /svn> DAV svn SVNParentPath /data/svn/repos SVNListParentPath On AuthType Basic AuthName "Subversion Server (LDAP)" AuthBasicProvider ldap file AuthBasicAuthoritative Off AuthzLDAPAuthoritative Off AuthLDAPUrl ldap://ldap-server/ou=hoge,dc=fuga,dc=example,dc=com?uid Require ldap-attribute description=subversion AuthUserFile /etc/httpd/conf/localuser.list Require valid-user <Limit GET OPTIONS PROPFIND REPORT MERGE> satisfy any </Limit> </Location>
LDAPでダメだったら、ローカルファイルの認証に移るような感じにしたいんだけど、これだとRequireディレクティブが複数あって、ローカルユーザの方でもldap-attribute云々を見てしまいそうな気がしていて、うまく認証できてない気がする。
成功した例
ならば、AuthLDAPUrlディレクティブに条件を持たせようと思って、以下のように設定したところ、期待通りの挙動となりました。
<Location /svn> DAV svn SVNParentPath /data/svn/repos SVNListParentPath On AuthType Basic AuthName "Subversion Server (LDAP)" AuthBasicProvider ldap file AuthBasicAuthoritative Off AuthzLDAPAuthoritative Off AuthLDAPUrl ldap://ldap-server/ou=hoge,dc=fuga,dc=example,dc=com?uid??(&(description=subversion)) AuthUserFile /etc/httpd/conf/localuser.list Require valid-user <Limit GET OPTIONS PROPFIND REPORT MERGE> satisfy any </Limit> </Location>
めでたしめでたし! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́
参考
- core - Apache HTTP サーバ バージョン 2.2
- mod_auth_basic - Apache HTTP サーバ バージョン 2.2
- mod_authn_file - Apache HTTP サーバ バージョン 2.2
- mod_authnz_ldap - Apache HTTP Server Version 2.2
- 作者: C. Michael Pilato,Ben Collins-Sussman,Brian W. Fitzpatrick,宮本久仁男(監訳),朝枝雅子,浜本階生
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/07/27
- メディア: 大型本
- 購入: 6人 クリック: 45回
- この商品を含むブログ (20件) を見る