やかんブログ

apache2.2でLDAP認証を使う

2008年05月02日(金)17:33|天方

apache2.2を使う

最近まで、apache2.0を使う機会はたくさんあったのですが、apache2.2を使う機会はありませんでした。久し振りに自宅のサーバにapacheを入れることになったので、apache2.2を選択してみました。

apache2.2になってもapache2.0と基本は変わらないのですが、以前から試しにつかっていたLDAP認証の部分は大きく変わっているようでその部分について簡単に説明したいと思います。

アクセス制御について

その前に、apache2.0からapache2.2に乗り換える上で気をつけるべき点としてもっとも大きなものは、アクセス制御のデフォルト設定が変わったことでしょう。apache2.2ではデフォルトでは、アクセス制御は、アクセス不可に設定されています。 したがって、apache2.0から乗り換える場合で、アクセス制御を何も指定していないDirectoryやLocationがあった場合は、

Order allow,deny
Allow from all

のような設定を追加することで、すべてのアクセスを許可することができます。

たとえば、http://ドメイン名/hoehogeのアクセス制御であれば、

Alias /hogehoge /var/www/hogehoge
<Directory "/var/www/hogehoge">
  Order allow,deny
  Allow from all
</Directory>

と 設定すればよいことになります。

LDAPによるアクセス制御について

apache2.0ではLDAPによるアクセス制御は以下のように書いていました。

LoadModule ldap_module    modules/mod_ldap.so
LoadModule auth_ldap_module   modules/mod_auth_ldap.so

<Location /ldaptest>
  AuthType Basic
  AuthName "ldap test page"
  require valid-user
  AuthLDAPURL ldap://localhost:389/ou=Users,dc=example,dc=com?uid?sub
  order deny,allow
  deny from all
</Location>

この設定だと、/ldaptestに、LDAPの ou=Users,dc=example,dc=com に登録されているユーザなら、BASIC認証で、ログインできることになります。

これをapache2.2で書くと以下のようになります。

LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
<Location /ldaptest>
  AuthType Basic
  AuthBasicProvider ldap # 追加された設定
  AuthName "ldap test page"
  AuthLDAPURL ldap://localhost:389/ou=Users,dc=example,dc=com?uid?sub
  require valid-user
  order deny,allow
  deny from all
</Location>

AuthBasicProvider ldapを選択する点が大きく変わった点となります。

LDAPのグループを使ったアクセス制限の場合

次に、LDAPの ou=Users,dc=example,dc=com に登録されているユーザのうち、cn=ldaptest,ou=Groups,c=example,dc=comに所属しているユーザのアクセスを許可する設定をしてみたいと思います。

apache2.0ではLDAPによるアクセス制御は以下のように書いていました。

LoadModule ldap_module    modules/mod_ldap.so
LoadModule auth_ldap_module   modules/mod_auth_ldap.so

<Location /ldaptest>
  AuthType Basic
  AuthName "ldap test page"
  AuthLDAPURL ldap://localhost:389/ou=Users,dc=example,dc=com?uid?sub
  AuthLDAPGroupAttribute memberUid
  AuthLDAPGroupAttributeIsDN off
  require group cn=ldaptest,ou=Groups,dc=example,dc=com
 order deny,allow
 deny from all
</Location>

これをapache2.2で書くと以下のようになります。
LoadModule ldap_module modules/mod_ldap.so
LoadModule authnz_ldap_module modules/mod_authnz_ldap.so
<Location /ldaptest>
  AuthType Basic
  AuthBasicProvider ldap #追加された設定
  AuthName "ldap test page"
  AuthLDAPURL ldap://localhost:389/ou=Users,dc=example,dc=com?uid?sub
  AuthLDAPGroupAttribute memberUid
  AuthLDAPGroupAttributeIsDN off
  require ldap-group cn=ldaptest,ou=Groups,dc=example,dc=com #変更された設定
  order deny,allow
  deny from all
</Location>
ここで一番気をつけるべきは、requireの種類がgroupからldap-groupになったことでしょう。 このようにapache2.0からapache2.2への置き換えは微妙に修正が必要です。ただ設定ファイルをコピーしただけでは、動かないので気をつけましょう。

この記事に関するお問い合わせはこちら

ページの先頭へ