Apacheの認証に LDAP(Lightweight Directory Access Protocol) を使用する環境を作ってみたいので整理しておく。
名称 | バージョン | 備考 |
---|---|---|
Solaris x86 | 10 | |
Apache | 2.2.3 | 2006.09.02時点での最新版。 |
$ tar zxf httpd-2.2.3.tar.gz $ cd httpd-2.2.3 $ ./configure --with-ldap --enable-ldap --enable-authnz-ldap $ make # make install
#error mod_authnz_ldap requires APR-util to have LDAP support built in. To fix add --with-ldap to ./configure.と言われて mod_authnz_ldap.c のコンパイルで失敗する場合は、configure に "--with-included-apr" オプションを付けて試してみる。
$ ./configure --with-ldap --enable-ldap --enable-authnz-ldap --with-included-apr $ make # make install
$ ./httpd -l Compiled in modules: core.c mod_authn_file.c mod_authn_default.c mod_authz_host.c mod_authz_groupfile.c mod_authz_user.c mod_authnz_ldap.c mod_authz_default.c mod_auth_basic.c mod_include.c mod_filter.c util_ldap.c mod_log_config.c mod_env.c mod_setenvif.c prefork.c http_core.c mod_mime.c mod_status.c mod_autoindex.c mod_asis.c mod_cgi.c mod_negotiation.c mod_dir.c mod_actions.c mod_userdir.c mod_alias.c mod_so.cmod_authnz_ldap.c と util_ldap.c が組み込まれている。
AuthType Basic
AuthName "LDAP Auth"
AuthBasicProvider ldap
AuthLDAPURL ldap://ldap.example.com/o=Example%20Limited,c=jp?uid ← スペースは"%20"にする
Require ldap-attribute objectClass=person
AuthType Basic AuthName "LDAP Auth" AuthBasicProvider ldap AuthzLDAPAuthoritative off ← "Require valid-user"を使用する場合には設定する必要あり AuthLDAPURL ldap://ldap.example.com/o=Example%20Limited,c=jp?uid ← スペースは"%20"にする Require valid-user
ldap://host:port/basedn?attribute?scope?filterbasedn にスペースを入れる場合は、"%20"にエンコードする。
AuthType Basic AuthName "LDAP & File Auth" AuthBasicProvider file ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://ldap.example.com/o=Example%20Limited,c=jp?uid Require ldap-attribute objectClass=person AuthUserFile /usr/local/apache2/htdocs/ldap-auth/.htpasswd Require valid-user上の設定では、まず File で認証を行い、File にユーザが存在しない場合は LDAP に問い合わせて認証を行う。
$ ldapsearch -x -H ldap://ldap.example.com -b "o=Example Limited, c=jp" -s sub "(uid=検索文字列)""検索文字列"には、ワイルドカードを指定できる。