いよいよ、前回構築した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>
ここでの修正点は、「AuthUserFile」の代わりに「AuthLDAPURL」を用いているところです。その値として、「ldap://」に続けて、LDAPサーバのアドレスを指定します。その後に「o=example,c=jp」のようにベースDNを指定し、続けてユーザー検索で使用する属性を指定します。通常は、uidなどのユーザーIDを使用します。
httpd.confを修正したらapachectlでApacheを再起動させ、Webブラウザでアクセスして動作を確認しましょう。
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の有無でも出力されるログファイルが異なる場合があります。
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
部門単位で制御するには、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]
Copyright © ITmedia, Inc. All Rights Reserved.