RFC 2254(LDAP検索フィルタの文字列表現)をチェックする必要があります。
LDAPフィルタでは、ブール演算子としてpolish notationが使用されます。そこで、オペレータは、そのオペランドの前に書かれている:
(&(condition1)(condition2)(condition3)...)
上記の例では、条件1 と CONDITION2 と condition3などを満たすすべてのLDAPエントリを望んでいることを意味します。
それから条件自体があります。彼らは非常にシンプルで、ほんのわずかなタイプで構成することができます:
- 現状 -
(attrName=*)
- 簡単な条件 -
(attrName>=value)
/(attrName<=value)
/(attrNamevalue=value)
/(attrName~=value)
- サブ条件 -
(attrName=*value*)
/(attrName=*value)
/(attrName=value*)
- 拡張可能条件 -
(attrName:dn:=value)
/(attrName:matchingRule:=value)
拡張可能条件のキーワードが:dn:
の場合、エントリDNの属性も同様に考慮する必要があります。したがって、あなたのケースのエントリcn=John Doe,ou=HumanResources,ou=Users,dc=example,dc=com
は、フィルタ(ou:dn:=HumanResource)
と一致します。
英語の文にあなたの例フィルタを翻訳すると、次のようになります。
くれperson
に等しいobjectClass
を持つすべてのLDAPエントリを検索し、ResearchAndDevelopment
またはHumanResources
そのou
属性でどこか自分のDNのいずれかを持っています。
これらの条件のサポートは、ベンダーによって異なります。たとえば、Active Directoryは拡張可能な条件をサポートしておらず、ほぼ等しい( '〜=')と等しい( '=')を同じように扱います。 [参考文献](http://ldapwiki.com/wiki/ExtensibleMatch) – bishop