一般的にWebサイト内には随所に公開したくない管理用やプライベートなページがある。Apacheではそのために設定ファイルのDirectoryディレクティブや各公開ディレクトリの.htaccessファイルでIPアドレスによるフィルタやBasic認証の設定が出来る。Basic認証は通常はApache独自のパスワードを管理するが、これをLDAPを参照するようにしたい。
まず、Apacheで必要なモジュールがロードされることを確認する。
[root@manager1 ~]# vi /etc/httpd/conf/httpd.conf ... LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so ...
そして認証をかけたいディレクトリの設定を以下のように変更する。
[root@manager1 ~]# vi /etc/httpd/conf.d/private.conf Alias /private "/var/www/html/private" <Directory "/var/www/html/private"> # SSLRequireSSL Options None AllowOverride None Order allow,deny Allow from all AuthName "LDAP Auth" AuthType Basic AuthBasicProvider ldap AuthLDAPURL ldap://ns1/ou=People,dc=grandarbre,dc=net?uid Require ldap-attribute objectClass=person </Directory>
ここでAuthLDAPURLとRequireは環境に合わせて修正しなければならない。 参考までに、当サイトのLDAPサーバではユーザは以下のように登録されている。
# testuser, People, grandarbre.net
dn: uid=testuser,ou=People,dc=grandarbre,dc=net
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: testuser
uidNumber: 1011
gidNumber: 513
homeDirectory: /home/testuser
gecos: System User,,,,
cn: System User
sn: User
givenName: System
loginShell: /bin/bash
userPassword: {SSHA}(削除)
あとはApacheに設定を再読み込みさせればOK。
[root@manager1 ~]# service httpd reload
