連載
» 2006年01月17日 00時00分 公開

実用 Apache 2.0運用・管理術(7):Apacheで作るファイルサーバ(LDAP認証編) (2/4)

[鶴長鎮一,@IT]

WebDAV over SSL+LDAP認証の実現

 いよいよ、前回構築したWebDAV over SSLにLDAP認証を組み込みます。LDAPがうまく動作しているなら、ここで行うべきことはhttpd.confを数行修正するのみです。理屈は抜きにして、まずは簡単な例でLDAP認証を試してみましょう。

 次の例は、LDAPに登録されている(ただし「o=example,c=jp」)ユーザー名とパスワードで認証を行う設定です。

<Location /webdav>
        DAV on
        SSLRequireSSL
        AuthType        Basic
        AuthName        "WebDAV Server"
        AuthLDAPURL     ldap://LDAPサーバのアドレス/o=example,c=jp?uid ←AuthLDAPURLを使用
        require valid-user
</Location>
LDAPに登録されているユーザー名とパスワードで認証を行う

 ここでの修正点は、「AuthUserFile」の代わりに「AuthLDAPURL」を用いているところです。その値として、「ldap://」に続けて、LDAPサーバのアドレスを指定します。その後に「o=example,c=jp」のようにベースDNを指定し、続けてユーザー検索で使用する属性を指定します。通常は、uidなどのユーザーIDを使用します。

 httpd.confを修正したらapachectlでApacheを再起動させ、Webブラウザでアクセスして動作を確認しましょう。

LDAP認証の仕組み

 LDAPでは、まず認証(Authentication)によってユーザー名とパスワードの一致などの確認処理を行います。認証を正常に通過すると、認可(Authorization)により書き込み/読み込みなどの権限付けが行われます。Apacheのhttpd.confの中で、認証をつかさどるのが先に登場したAuthLDAPURLです。

        AuthLDAPURL     ldap://LDAPサーバのアドレス/o=example,c=jp?uid

 認可を制御しているのは、requireです。

        require valid-user

 この認証と認可に課金管理(Accounting)を併せたものを、それぞれの頭文字を取って「AAA」と呼んでいます。

 参考:RADIUSを使おう(1)

 LDAP認証がうまくいかない場合はログを参照しながら問題を解決することになりますが、「認証に失敗した場合」と「認可に失敗した場合」でログの出力先が異なるため注意が必要です。

  • 認証に失敗した場合:ssl_error_logやerror_log
  • 認可に失敗した場合:ssl_access_logやaccess_log

注:SSLの有無でも出力されるログファイルが異なる場合があります。


 Fedora Core 4では/var/log/httpd/下に、ソースからインストールした場合のデフォルトは/usr/local/apache2/logs下にログファイルが作成されます。

ユーザー単位のアクセス制御

 LDAPのエントリデータを利用し、属性で制限を掛けることも可能です。

 所属部署に関係なく、ユーザー単位でアクセスを制御するには、require userで権限を与えるuidを指定します。

<Location /ディレクトリ>
(省略)
        AuthLDAPURL     ldap://LDAPサーバのアドレス/o=example,c=jp?uid
        require user user01 user03
(省略)
</Location>

 認可に失敗した場合は、次のようなエラーが出力されます。

access to /webdav failed, reason: user user02 not allowed access
error_log

部門単位のアクセス制御

 部門単位で制御するには、AuthLDAPURLで「ou=sales,o=example,c=jp」のように、ベースDNに属性まで含めて指定します。

<Location /ディレクトリ>
(省略)
 
    AuthLDAPURL     ldap://LDAPサーバのアドレス/ou=sales,o=example,c=jp?uid
    require valid-user
 
(省略)
</Location>

 この場合、指定された部門に所属していないユーザーは認証エラーになり、次のように出力されます。

auth_ldap authenticate: user user01 authentication failed; URI /webdav [User not found][No such object]
error_log

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。