2011-09-19 11 views
7

LDAPクライアントプログラムでは、DN値を検索フィルターに含める必要があることがあります。しかし、このDNは頻繁に変化しており、私のコードでこのフィルタを変更する必要があります。私はそのためにそれをGoogleで検索すると検索フィルターにDNを使用する

は、私はあなたがR & DおよびOU HRからのObjectType =人のすべてのユーザーを引くしたいとし、この

ようなものを得たが、マーケティングおよびPMからではない任意のユーザー。フィルタは次のようになります。

(&(objectClass=person)(|(ou:dn:=ResearchAndDevelopment)(ou:dn:=HumanResources))) 

詳細は誰でも説明できますか?

答えて

8

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のいずれかを持っています。

+0

これらの条件のサポートは、ベンダーによって異なります。たとえば、Active Directoryは拡張可能な条件をサポートしておらず、ほぼ等しい( '〜=')と等しい( '=')を同じように扱います。 [参考文献](http://ldapwiki.com/wiki/ExtensibleMatch) – bishop

関連する問題