このトピックを使用して、LDAP 検索フィルターを構成します。
これらのステップは、特定の LDAP ディレクトリー・タイプの既存のユーザー・フィルターおよびグループ・フィルターを変更する場合、および、証明書を LDAP サーバー内のエントリーにマッピングするように証明書フィルターをセットアップする場合に必要です。
始める前に
WebSphere Application Server では Lightweight Directory Access Protocol (LDAP) フィルターを使用して
、LDAP ディレクトリー・サーバーからユーザーおよびグループについての情報を検索および取得します。
この製品がサポートする LDAP サーバーごとに、デフォルトのフィルター・セットが提供されます。これらのフィルターは、
ユーザーの LDAP 構成に合わせて変更できます。フィルターを変更後、「OK」または「適用」をクリックすると、
「LDAP レジストリー」パネルのディレクトリー・タイプが、カスタム・フィルターが使用されていることを示す「カスタム」
に変わります。また、それ以外のタイプの LDAP サーバーをサポートするように、フィルターを開発することもできます。それ以外の LDAP ディレクトリーをサポートするかどうかはオプションであり、別の LDAP ディレクトリー・タイプはサポートしていません。管理コンソールで以下のステップを実行します。
プロシージャー
- 「セキュリティー」>「グローバル・セキュリティー」をクリックします。
- 「ユーザー・レジストリー」の下の「LDAP」をクリックします。
- 「追加プロパティー」の下で、「拡張 LDAP ユーザー・レジストリー設定」をクリックします。
- 必要に応じて、「ユーザー」フィルターを変更します。 ユーザー・フィルターは、
ユーザー用のレジストリーの検索に使用されるもので、一般には、ユーザーへのセキュリティー役割の割り当てに使用されます。また、このフィルターは、
フィルターで指定した属性を使用してユーザーを認証するためにも使用されます。このフィルターは、ディレクトリー・サービス内で
ユーザーを検索するために使用するプロパティーを指定します。
次の例で、ユーザーのショート・ネームである %v に
割り当てられるプロパティーは、固有キーでなければなりません。オブジェクト・クラスが同じであ
る 2 つの LDAP エントリーには、同じショート・ネームを指定することはできません。
ユーザー ID (uid) を基に、inetOrgPerson オブジェクト・
クラスを使用してユーザーを検索するには、次の構文を指定してください。
(&(uid=%v)(objectclass=inetOrgPerson)
この構文の詳細については、特定のディレクトリー・サーバーの LDAP サーバーとしての使用
の資料を参照してください。
- 必要に応じて、「グループ」フィルターを変更します。 グループ・フィルターは、
グループ用のレジストリーの検索に使用されるもので、一般には、グループへのセキュリティー役割の割り当てに使用されます。また、このフィルターは、ディレクトリー・サービスでグループの検索に使用するプロパティーを指定するためにも使用されます。
次の例で、グループのショート・ネームである %v に
割り当てられるプロパティーは、固有キーでなければなりません。オブジェクト・クラスが同じであ
る 2 つの LDAP エントリーには、同じショート・ネームを指定することはできません。
グループの共通名 (CN) に基づき、
groupOfNames オブジェクト・クラスまたは groupOfUniqueNames オブジェクト・クラスを使用してグループを検索するためには、
次の構文を指定してください。
(&(cn=%v)(|(objectclass=groupOfNames)(objectclass=groupOfUniqueNames)))
この構文の詳細については、特定のディレクトリー・サーバーの LDAP サーバーとしての使用
の資料を参照してください。
- 必要に応じて、「ユーザー ID マップ」を変更します。 このフィルターは、
LDAP エントリーにユーザーのショート・ネームをマップし、これらのユーザーがそのショート・ネームによって表示されるときにユーザーを表す情報を指定します。例えば、オブジェクト・クラス = inetOrgPerson のエントリーを ID
別に表示する場合は、inetOrgPerson:uid を指定します。
このフィールドには、セミコロン (;) で区切られた「オブジェクト・クラス: プロパティー」の複数のペアが入ります。
getCallerPrincipal メソッドおよび getUserPrincipal メソッドなどのメソッドに一貫性のある値を提供するためには、
このフィルターを使用して取得されるショート・ネームが使用されます。
例えば、CN=Bob
Smith, ou=austin.ibm.com, o=IBM, c=US ユーザーがログインする際には、
定義された任意の属性、例えば E メール・アドレス、社会保障番号などを使用できますが、
上記のメソッドが呼び出される場合は、ログインの方法に関係なく、bob ユーザー ID が戻されます。
- 必要に応じて、「グループ ID マップ」フィルターを変更します。
このフィルターは、LDAP エントリーにグループのショート・ネームをマップし、
グループが表示されるときにグループを表す情報を指定します。例えば、グループを名前別に表示するには、*:cn を指定します。
アスタリスク (*) はワイルドカード文字で、この場合、あらゆるオブジェクト・クラスを検索します。
このフィールドには、セミコロン (;) で区切られた「オブジェクト・クラス: プロパティー」の複数のペアが入ります。
- 必要に応じて、「グループ・メンバー ID マップ」フィルターを変更します。 このフィルターは、
ユーザーとグループ・メンバーシップの対応を識別します。SecureWay、および Lotus Domino ディレクトリー・タイプの場合、
このフィールドは、指定したオブジェクト・クラスに一致する
すべてのグループを照会して、指定した属性にユーザーが含まれているかどうかを確認するために使用されます。例えば、
groupOfNames オブジェクト・クラスのグループに属するすべてのユーザーおよび、
メンバー属性に含まれているユーザーを取得するためには、groupOfNames:member と指定します。
オブジェクト・クラスのプロパティーであるこの構文は、
そのオブジェクト・クラスによって表されるグループに属するメンバーのリストを保管します。
このフィールドには、セミコロン (;) で区切られた複数の「オブジェクト・クラス: プロパティー」のペアが入ります。
この構文の詳細については、特定のディレクトリー・サーバーの LDAP サーバーとしての使用
を参照してください。
IBM Tivoli Directory Server、Sun ONE、およびアクティブ・ディレクトリーでは、このフィールドは、
グループ内のすべてのユーザーをユーザー・オブジェクトに保管された情報を使用して照会するときに使用されます。
例えば、memberof:member フィルター (アクティブ・ディレクトリーの場合) は、
ユーザー・オブジェクトの memberof 属性を取得して、そのユーザーが所属するすべてのグループを把握するために使用されます。
member 属性は、グループ・オブジェクトを使用するグループ内のすべてのユーザーを取得するために使用されます。
グループ情報の取得にユーザー・オブジェクトを使用すると、パフォーマンスが向上します。
- 「ネスト・グループ検索の実行」オプションを選択するのは LDAP サーバーが
再帰的なサーバー・サイド検索をサポートしていない場合に限るようにしてください。
- 必要に応じて、「証明書マップ・モード」を変更します。 レジストリーとして LDAP が選択されている場合は、X.590 証明書をユーザー認証に使用できます。このフィールドは、X.509 証明書を、EXACT_DN または CERTIFICATE_FILTER によって LDAP ディレクトリー・ユーザーにマップするかどうかを示すために使用されます。
EXACT_DN を選択する場合には、
証明書の DN は、大/小文字やスペースも含めて LDAP サーバー内のユーザー・エントリーと完全に
一致しなければなりません。
LDAP 設定の「
Ignore case for authorization」オプションを選択すると、
許可で大/小文字を区別しないようにすることができます。「LDAP 設定」パネルにアクセスするには、
以下のステップを実行します。
- 「セキュリティー」>「グローバル・セキュリティー」をクリックします。
- 「ユーザー・レジストリー」の下の「LDAP」をクリックします。
- 「CERTIFICATE_FILTER」を選択した場合は、
クライアント証明書の属性を LDAP 内のエントリーにマップするときに使用する LDAP フィルター
を指定します。
実行時に複数の LDAP エントリーがフィルターの指定に一致すると、
あいまい一致となるので、認証は失敗します。このフィルターの構文または構造は、LDAP attribute=${Client certificate attribute} (例えば uid=${SubjectCN}) です。
フィルター仕様の左辺は LDAP 属性で、これは LDAP サーバーが構成時に使用するスキーマにより異なります。
フィルター仕様の右辺は、クライアント証明書にあるパブリック属性の 1 つです。
右辺はドル記号 ($)、左大括弧 ({) で始め、右大括弧 (}) で閉じる必要があることに注意してください。フィルター指定の右辺では、以下の証明書属性値を使用します。ストリングの大/小文字の区別は重要です。
- ${UniqueKey}
- ${PublicKey}
- ${Issuer}
- ${NotAfter}
- ${NotBefore}
- ${SerialNumber}
- ${SigAlgName}
- ${SigAlgOID}
- ${SigAlgParams}
- ${SubjectDN}
- ${Version}
このフィールドを使用可能にするには、証明書マッピングで CERTIFICATE_FILTER を選択します。
- 「適用」をクリックします。
「拡張 LDAP 設定」パネル
で LDAP ユーザーまたはグループ・フィルターを変更した場合は、「
適用」をクリックしてください。「
OK」をクリックすると、「LDAP ユーザー・レジストリー」パネルに移動しますが、このパネルでは、
カスタムの LDAP ディレクトリー・タイプではなく、以前の LDAP ディレクトリー・タイプが示されます。
「LDAP ユーザー・レジストリー」パネルで「
OK」か「
適用」をクリックすると、
バックレベルの LDAP ディレクトリー・タイプが保管され、その後、そのディレクトリーのデフォルト・フィルターが
保管されます。この処置により、フィルターに加えた変更は上書きされます。変更を上書きしないようにするには、
次のいずれかを行います。
- 「Advanced Lightweight Directory Access Protocol (LDAP) ユーザー・レジストリー設定」パネル
で「適用」をクリックします。「セキュリティー」>「グローバル・セキュリティー」をクリックして、
アクティブ・ユーザー・レジストリー・ディレクトリー・タイプを Custom に変更します。
- 「ユーザー・レジストリー」パネルで、「カスタム」タイプを選択します。
「適用」をクリックしてから、「Advanced Lightweight Directory Access
Protocol (LDAP) ユーザー・レジストリー設定」パネルをクリックしてフィルターを変更します。変更が完了したら、「適用」または「OK」をクリックします。
その変更の検証はこのパネルでは行いません。検証は、「グローバル・セキュリティー」パネルで「OK」または「適用」をクリックしたときに行われます。
セキュリティーを初めて使用可能にする場合は、残りのステップを完了して「グローバル・セキュリティー」パネルに移動します。アクティブ・ユーザー・レジストリー
として「LDAP」を選択します。セキュリティーが既に使用可能になっていて、
このパネルの情報を変更した場合は、その変更を有効にするために、「グローバル・セキュリティー」パネルに移動して、
「OK」または「適用」をクリックします。
変更が有効になっていないと、サーバーは始動しません。
結果
これらのステップによって、LDAP 検索フィルターが構成されます。
これらのステップは、特定の LDAP ディレクトリー・タイプのための、既存のユーザーおよびグループ・フィルターを変更する際に必要です。
また、これらのステップは、証明書を LDAP サーバー内のエントリーにマップするように証明書フィルターをセットアップする際にも使用されます。
次の作業
- 「グローバル・セキュリティー」パネルで「OK」または「適用」をクリックして、このセットアップを検証してください。
- このパネルの変更内容を有効にするには、セル、ノードおよびすべてのアプリケーション・サーバーなどのすべての製品サーバーを保管し、停止してから始動します。
- サーバーが始動したら、セキュリティー関連のタスク (ユーザーの取得、
グループの取得など) をすべて試して、フィルターに加えた変更が機能することを確認してください。