このセクションでは、IBM® HTTP Server でファイルを保護するために LDAP を構成する方法を説明します。
始める前に
非推奨フィーチャー: mod_ibm_ldap モジュールは、今回の IBM HTTP
Server リリースでは以前のリリースとの互換性のために提供されています。ご使用の LDAP 構成に mod_ibm_ldap モジュールを使用している場合、LDAP 構成が今後も確実にサポートされるようにするには、既存の構成を移行して mod_authnz_ldap および mod_ldap モジュールを使用する必要があります。mod_ldap モジュールの使用方法については、『
IBM HTTP Server での mod_ldap を使用した LDAP 認証 』を参照してください。
depfeat
デフォルトでは、LDAP モジュールは IBM HTTP Server にロードされません。LoadModule ディレクティブがないと、LDAP フィーチャーは使用できません。
LDAP 機能を使用可能にするには、以下のようにして、
IBM HTTP Server の httpd.conf ファイルに LoadModule ディレクティブを追加してください。
ご使用のコンピューターに LDAP クライアントがインストールされている場合は、
使用する値をさまざまな設定でテストするツールとして ldapsearch を使用することができます。
このタスクについて
LDAP (mod_ibm_ldap) ディレクティブの詳細説明を取得するには、
LDAP ディレクティブを参照してください。
手順
- httpd.conf IBM HTTP Server 構成ファイルを編集します。
- アクセスを制限するリソースを決定します。 例えば、<Directory "/secure_info"> とします。
- httpd.conf 内のディレクティブをディレクトリー・ロケーション
(コンテナー) に追加し、ご使用の環境に固有の値で保護します。
以下に例を示します。
- LdapConfigFile path_to_ldap.prop
- AuthType Basic
- AuthName "保護レルムのタイトル"
- Require valid-user
- IBM HTTP Server を使用して
既存の LDAP インストールで認証を行う方法には、3 つのオプションがあります。
- LDAP グループ・メンバーシップに基づいた許可。
LDAP を使用して
ユーザー・パスワードを確認し、LDAP で定義されたグループにそのユーザーが存在することを
確認します。
注: ユーザーがリソースにアクセスできると識別するメンバーシップは、
グループの一部ですが、ユーザー自身の LDAP エントリーの一部ではありません。
例えば、グループへのアクセスを制限するには、以下のディレクティブを追加します。
LDAPRequire group grp1
この形式の LDAPRequire の場合、グループを
以下のルールに準拠する LDAP リポジトリーで構成する必要があります (例のグループ名 grp1 を使用)。
- 以下の検索フィルターに一致する LDAP リポジトリーにエントリーがあり、
値 groupofnames および groupofuniquenames は
ldap.group.dnattributes で指定された値の例です。
注: ldap.group.dnattributes の
適切な値は、LDAP スキーマ内のグループであると objectclasses が示すもののリストです。
ldapsearch ... "(&(cn=grp1)(|(objectclass=groupofnames)
(objectclass=groupofuniquenames)))"
- 「grp1」の LDAP エントリーの一部として、以下に一致する一連の属性があります。
ここで、値 member および uniquemember は、
ldap.group.memberAttributes の値の例です。
注: ldap.group.memberAttributes の適切な値は、
グループ内でメンバーシップであると objectclasses が示すもののリストです。これらのエントリーの値は、
ユーザーの識別名 (DN) です。
ldapsearch ... "(&(cn=grp1)(|(objectclass=groupofnames)
(objectclass=groupofuniquenames)))" member uniquemember
例えば、以下のようになります。
ldapsearch -x -h myldapserver -D cn=root -w rootpw
"(&(cn=grp1)(|(objectclass=groupofnames)(objectclass=groupofuniquenames)))"
member uniquemember
dn: cn=group1,ou=myunit,o=myorg,c=US
member: cn=user1, ou=otherunit, o=myorg, c=US
member: cn=user12, ou=otherunit, o=myorg, c=US
ldap.group.dnattributes にリストされたタイプのオブジェクトが、検索対象のグループのメンバーである場合、
これは、ldap.group.search.depth の深さまで同じ方式で再帰的に検索されます。
- 最初に、IBM HTTP Server は ldap.group.name.filter および ldap.user.cert.filter を使用して、
ユーザーおよびグループに提供された CN を識別名 (DN) に変換します。次に、IBM HTTP Server は、値がユーザー DN であるエントリーの基本としてグループ DN を使用して
検索を行います。
例えば、以下のようになります。
ldapsearch ... -b "cn=grp1,ou=myunit,o=myorg,c=US"
"|((member=cn=user1,ou=otherunit,o=myorg,c=US)
(uniquemember=cn=user1,ou=otherunit,o=myorg,c=US))"
- ユーザーの LDAP 属性に基づいた許可。 LDAP を使用して、
ユーザー・パスワードを確認し、ユーザーが一連の属性と一致することを確認します
(ユーザーがリソースにアクセスできると識別する属性は、
ユーザー自身の LDAP エントリーの一部です)。
例えば、以下のようになります。
LDAPRequire filter "(&(jobtitle=accountant)(location=newyork))"
この形式の LDAPRequire を使用するには、IBM HTTP Server は ldap.user.cert.filter を使用して、
ユーザーに提供された CN を DN に変換する必要があります。IBM HTTP Server は、
ユーザー DN を基本として使用して検索を行い、
LDAPRequire ディレクティブで提供される検索フィルターを使用する必要もあります。結果が戻されれば、許可は成功です。
例:
ldapsearch ... -b "cn=user1,ou=otherunit,o=myorg,c=US" "(&(jobtitle=accountant)
(location=newyork))"
LDAP 内の一部の属性 (動的ロール
とも呼ばれます) は、LDAP サーバーによって動的に計算され、
検索フィルターで無効の異なるセマンティクスを持つ可能性があります。そのような値は、
上記の例で使用すると失敗し、
IBM HTTP Server での許可には使用できません。
- 認証のみ: LDAP を使用し、ユーザー・パスワードのみを確認します。
Require ディレクティブを使用して、特定のユーザーに制限したり、
AuthGroupFile を使用してフラット・グループ・ファイルを保守することができます。
- ldap.prop 構成ファイルを編集します。
このファイルがない場合は、IBM HTTP Server に同梱される ldap.prop.sample ファイルを使用することができます。
正しい値について質問がある場合は、LDAP サーバーの管理者へご確認ください。
ご使用の環境に適切な値で、以下のディレクティブを更新します。
- Web サーバー接続情報を入力します。
- SSL、LDAPS、または LDAP over SSL を使用する場合:
タスクの結果
mod_ibm_ldap ディレクティブを使用する検索は、
ldap.application.dn ユーザーとして認証を行うサーバー接続のプールを保守します。
最初の接続は、LDAP 保護された最初の要求が受け取られると作成されます。
接続は、その接続または他の要求の接続でのその後の検索のために、
指定された秒数 (ldap.idleConnection.timeout) の間は開かれています。
ログを読んでいる場合、
または IP トレースを見ている場合は、以下の一連のイベントが発生します。
- IBM HTTP Server が始動します。
- LDAP_TRACE_FILE が設定されている場合、LDAP_obtain_config に対していくつかのエントリーがあります。
- LDAP 保護されたリソースの最初の要求が受け取られます。
- IBM HTTP Server は、ldap.application.password.stashFile に隠された ldap.application.dn ユーザー名および
パスワードを使用して、LDAP にバインドします (アプリケーション接続)。
- IBM HTTP Server は、この接続上で検索を実行し、user.*.filter 設定を使用して、
ユーザーが入力したユーザー名またはクライアント証明書の内容を識別名 (DN) に変換します。
- IBM HTTP Server は、クライアントによって提供されたユーザー名/パスワードとして LDAP サーバーにバインドし、
認証を確認します (これは、LDAP サーバーに対する「ユーザー接続」です)。
- LDAPRequire ディレクティブがこの要求に対して有効である場合、IBM HTTP
Server は、上記の手順で説明した方法でこれらを処理します。
- IBM HTTP Server がユーザー接続をアンバインドします。
- アプリケーション接続は、次の要求のために保守されます。