Webアプリケーションを作成している際に、自分のサーバにサブドメインを設定して開発環境としていて、開発状況をメンバーに見せたい、という場合、Basic認証で制限をかけることは多いと思います。
で、せっかくLDAP認証を導入しているので、使ってみました。
参考にしたのは、こちらのページ。感謝です。
LDAPクライアント認証(Part2) | ネットマーベラス株式会社
認証、承認、アクセス制御 – Apache HTTP サーバ バージョン 2.5
前提として、以下の条件でサンプルを考えます。
1. サブドメイン
hoge.netanote.com
で設定されている。
2. 閲覧させたいユーザ
・LDAP上のあるグループ(サンプル上ではgid=500)に所属しているコアメンバー
・上記グループ以外のオブザーバーメンバー
で、結論としては、こんな風にApacheのconfファイルを記述しました。
※抜粋です。OptionsだとかAllowOverrideは環境に合わせてください。
/etc/httpd/conf.d/hoge.conf
<VirtualHost *:80> DocumentRoot /var/www/hoge ServerName hoge.netanote.com <Directory /> Options FollowSymLinks AllowOverride All AuthType Basic AuthName "LDAP Auth" AuthBasicProvider ldap AuthLDAPBindDN cn=manager,dc=netanote,dc=com AuthLDAPBindPassword [managerのパスワード] AuthLDAPURL ldaps://[LDAPサーバ]:636/ou=People,dc=netanote,dc=com?cn Require ldap-attribute gidNumber=500 Require ldap-attribute description=hogeweb </Directory> </VirtualHost>
.htaccessに記述すると、AuthLDAPBindPasswordがさらされそうなので、confファイルに記述しました。
僕らのLDAP環境では、cnにサーバのログイン名が入っていますので、AuthLDAPURLの?の後ろはcnを設定します。
また、LDAPのアカウントはPeopleの下に入っているので、同じくAuthLDAPURLはou=Peopleから記述を始めます。
参考ページによると、RequireはOR条件だそうなので、グループ条件と個別条件を2行で記述しました。
個別条件は、description要素を使って制御しています。description要素の値は任意の値が設定可能です。今回はhogewebという値が入っているdescription要素があるアカウントを承認します。
ちなみにdescription要素も何個登録してあっても、そのうちの一つにキーワード(今回のhogeweb)が登録されていればOKです。
とはいえ、もちろんBasic認証のログイン名とパスワードも正しくないと承認されませんよ。