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
[bash]
DocumentRoot /var/www/hoge
ServerName hoge.netanote.com
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
[/bash]
.htaccessに記述すると、AuthLDAPBindPasswordがさらされそうなので、confファイルに記述しました。
僕らのLDAP環境では、cnにサーバのログイン名が入っていますので、AuthLDAPURLの?の後ろはcnを設定します。
また、LDAPのアカウントはPeopleの下に入っているので、同じくAuthLDAPURLはou=Peopleから記述を始めます。
参考ページによると、RequireはOR条件だそうなので、グループ条件と個別条件を2行で記述しました。
個別条件は、description要素を使って制御しています。description要素の値は任意の値が設定可能です。今回はhogewebという値が入っているdescription要素があるアカウントを承認します。
ちなみにdescription要素も何個登録してあっても、そのうちの一つにキーワード(今回のhogeweb)が登録されていればOKです。
とはいえ、もちろんBasic認証のログイン名とパスワードも正しくないと承認されませんよ。