Interstage ディレクトリサービスのクライアントで使用できる検索フィルタ(RFC1558準拠)とその使用例を次に示します。
■使用できる検索フィルタ
検索フィルタには、以下の5つを指定することができます。
フィルタ | 内容 |
---|---|
指定した値と同じ属性値がある場合に、取り出します。 | |
指定した部分文字列を含む属性値がある場合に、取り出します。 | |
指定した値以上の属性値がある場合に、取り出します。 | |
指定した値以下の属性値がある場合に、取り出します。 | |
属性値がある場合に、取り出します。 |
また、上記の各フィルタを組み合わせることで、より詳細に指定することができます。以下に組み合わせに使用する論理演算を示します。
論理演算 | 内容 |
---|---|
複数のフィルタを論理積(AND)条件で結びます。 | |
複数のフィルタを論理和(OR)条件で結びます。 | |
指定した条件が偽の場合に、有効です。以下のどちらかの方法で指定できます。
例:
(!(cn=Fujitsu)(uid=0123))という使い方はできません。 |
■検索フィルタの文法
検索フィルタの文法は、以下のRFC文書に記述されています。
RFC1960 : “A String Representation of LDAP Search Filters”
RFC2254 : “The String Representation of LDAP Search Filters”
例
同値(=)
cnがUser001であるエントリを検索します。
(cn=User001)
部分文字列(文字列*)
cnがFujitsuで始まるエントリだけを検索します。
(cn=Fujitsu*)
以上(>=)、以下(<=)
dnQualifierが「abc」以上のエントリを検索します。
(dnQualifier>=abc)
存在(=*)
cnを含む全エントリを検索します。
(cn=*)
論理積(&)
cnがUser001で、かつsnがFujitsuであるエントリを検索します。
(&(cn=User001)(sn=Fujitsu))
論理和(|)
givenNameがUser001、またはUser002であるエントリを検索します。
(|(givenName=User001)(givenName=User002))
否定(!)
cnがFujitsuで始まらないエントリだけを検索します。
(!(cn=Fujitsu*))
注意
検索フィルタを指定する場合は、検索フィルタを引用符で囲んで指定してください。ldapsearchコマンドで検索フィルタを指定するときには、使用するコマンドラインに応じて、シングル引用符とダブル引用符のどちらかで囲んでください。
■特殊文字の指定方法
検索フィルタの値に、検索する値として以下の特殊文字を指定する場合、その特殊文字を「\」(エンマーク)でエスケープします。
ldapsearchコマンドでは、1つのエスケープ文字「\」に続けて、16進数として指定する必要があります。
LDAP SDK(C API)では、2つのエスケープ文字「\\」に続けて、16進数として指定する必要があります。
LDAP SDK(JNDI)では、16進数にする必要はありません。以下のように指定します。
特殊文字 | ldapsearchコマンド | LDAP SDK(C API) | LDAP SDK(JNDI) |
---|---|---|---|
* | \2a | \\2a | \\* |
( | \28 | \\28 | \\( |
) | \29 | \\29 | \\) |
\ | \5c | \\5c | \\\\ |
例
検索フィルタの値に「富士通(株)」を指定する場合、以下のように指定します。
ldapsearchコマンド
"o=富士通\28株\29"
LDAP SDK(C API)
(o=富士通\\28株\\29)
LDAP SDK(JNDI)
(o=富士通\\(株\\))