2011-09-19 272 views
7

在我的LDAP客戶端程序中,有時必須在搜索過濾器中包含DN值。但是這個DN經常變化,我必須在代碼中更改這個過濾器。在搜索過濾器中使用DN

當我用Google搜索它,我得到了這樣的事情

假設你想拉對象類型=人的所有用戶從R & d和HR組織單位,但不能從市場營銷和PM的任何用戶。該過濾器將是:

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

任何人都可以解釋這更詳細?

回答

8

您應該檢查RFC 2254(LDAP搜索過濾器的字符串表示形式)。

LDAP過濾器使用polish notation作爲布爾運算符。因此,運營商在其操作數之前寫:

(&(condition1)(condition2)(condition3)...) 

上面的例子意味着你要滿足條件1 條件2 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)


翻譯你的榜樣過濾器的英文句子是:

找到我這有objectClass等於person所有LDAP條目,要麼ResearchAndDevelopmentHumanResources他們ou屬性或地方上的DN 。

+0

請注意,對於這些條件的支持因供應商而異。例如,Active Directory不支持可擴展的條件,並且以相同的方式處理近似相等('〜=')和相等('=')。 [參考](http://ldapwiki.com/wiki/ExtensibleMatch) – bishop