apacheのbasic認証をLDAPで
使っているCentOS6.4のhttpdを確認。パッケージ版はLDAPモジュールが入っているようだ。
$ rpm -qa | grep httpd httpd-tools-2.2.15-28.el6.centos.x86_64 httpd-2.2.15-28.el6.centos.x86_64 $ cd /etc/httpd/conf $ grep ldap httpd.conf LoadModule ldap_module modules/mod_ldap.so LoadModule authnz_ldap_module modules/mod_authnz_ldap.so $
なお、セルフコンパイルする場合は、--with-ldapを忘れずに行うこと。
$ ./configure --with-ldap --enable-authnz-ldap=shared --enable-ldap=shared .... $ make $ make install
LDAPのURI
LDAPのURIは以下のようになる。基本的には"?"でつなげる。まあ当たり前だよね。
scheme "://" [hostport] ["/" [dn ["?" [attributes] ["?" [scope] ["?" [filter] ["?" extensions] ] ] ] ] ]
例えばuidの表示、
$ ldapsearch -x -s sub -b 'ou=Users,dc=miyagino,dc=net' '(uid=test0)' uid
は、
ldap://localhost/ou=Users,dc=miyagino,dc=net?uid?sub?(uid=test0)
となる。
Apacheの設定
パッケージ版のhttpd.confではデフォルトでLoadModuleしてくれているので、必要な設定を以下のように記述。
# cd /etc/httpd/conf # vi httpd.conf .... ServerName localhost:80 .... # cd /etc/httpd/conf.d # vi ldap.conf Alias /ldap/ /home/httpd/ldap/ <Directory "/home/support/ldap/"> AuthName "LDAP Authentication" AuthType Basic AuthBasicProvider ldap AuthzLDAPAuthoritative off AuthLDAPURL ldap://localhost/ou=Users,dc=miyagino,dc=net?uid?sub?(objectClass=posixAccount) Require valid-user </Directory> # /etc/init.d/httpd start
これでhttp://localhost/ldapにアクセスすると、ユーザ名に"uid"の値を指定して設定したパスワードでアクセス可能となる。
その他、設定内容は以下。
AuthLDAPBindDN | LDAPサーバへバインドするためのバインドDN |
---|---|
AuthLDAPBindPassword | 上記パスワード |
AuthLDAPUrl | LDAP URLの指定 |
AuthzLDAPAuthoritative | 認証が失敗したときに他の認証モジュールが認証を行うのを防ぐ |