LDAPとApacheのBasic認証

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認証のログイン名とパスワードも正しくないと承認されませんよ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です