2014-02-10 39 views
0

我試圖從OpenLDAP服務器獲取DirectoryEntry以查找類似於「LDAP:// server/cn = John Smith + sn = Smith,ou = people,dc = corp,dc =組織「:在DirectoryEntry中轉義ldap dn

​​

它返回錯誤0x80005000,其中,我假定意味着在DN一些字符不會被轉義。 (對於不包含任何DN「+ SN =」這個代碼工作正常)

文檔指出,特殊字符應該逃過一劫,但以任何方式逃避DN:

  • LDAP://服務器/ cn = John Smith \ + sn \ = Smith,ou = people,dc = corp,dc = org
  • LDAP:// server/cn = John Smith \ + sn = Smith,ou = people,dc = corp, DC =組織
  • LDAP://服務器/ CN =約翰·史密斯\ 2Bsn \ 3DSmith,OU =人,DC =公司,DC =組織
  • LDAP://服務器/ CN =約翰·史密斯,OU =人, dc = corp,dc = org

收益率「服務器上沒有這樣的對象」。

此外,父ou不會在dn中列出具有'+ sn ='子字符串的任何子項,但DirectorySearcher針對特定過濾器(如'(cn = John Smith)')返回正確的結果。

> $ent = New-Object "LDAP://server/ou=people,dc=corp,dc=org", "user", "pass", "FastBind" 
> $ent.Children 
.... 
everything, except Jonh Smith 
.... 
> Search-ldap "(cn=John Smith)" 
Path            Properties 
----            ---------- 
LDAP://server/cn=John Smith+sn=Smith,ou=peopl... {sambapwdlastset, telephonenumber, sn...} 

LDAP瀏覽器(根據,我認爲,在dotNet的LDAP組件)也不會顯示在父OU此項。

那麼,有沒有什麼方法可以像這樣正確地轉義dn?

UPDATE

Java客戶端做工精細,Wireshark的顯示,Java的發送轉義字符串獲得對象,和DOTNET發送轉義字符串和將一無所獲。

是否有可能轉義字符串或重新配置openldap服務器接受轉義字符串?

回答