2014-02-10 2 views
0

Я пытаюсь получить DirectoryEntry с сервера OpenLDAP для dn, который выглядит как «LDAP: // server/cn = John Smith + sn = Smith, ou = people, dc = corp, dc = орг ":Escape ldap dn в DirectoryEntry

> New-Object "LDAP://server/cn=John Smith+sn=Smith,ou=people,dc=corp,dc=org", "user", "pass", "FastBind" 

возвращает ошибку 0x80005000, который, я предполагаю, означает, что некоторые символы в дпе не спаслись. (Для любого дп, не содержит «+ зп =» Этот код работает отлично)

Документация состояния, что специальные символы должны быть экранированы, но избежать дп никак:

  • 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: // сервер/сп = Джон Смит \ 2Bsn \ 3DSmith, НУ = люди, DC = АМФ, DC = орг
  • LDAP: // сервер/сп = John Smith, OU = люди, dc = corp, dc = org

Доходность «На сервере нет такого объекта».

Кроме того, parent ou не перечисляет ни одного дочернего элемента с подстрокой '+ sn =' в dn, но 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 Browser (на основе, как я предполагаю, на компоненте LDAP Dotnet) также не отображать эту запись в родительском оу.

Итак, есть ли способ правильно выполнить dn, как это?

UPDATE

Java клиенты работают нормально, Wireshark показывает, что Java посылает неэкранированную строку, чтобы получить объект, и Dotnet посылает сбежавшую строку и ничего не получает.

Можно ли избежать строки или перенастроить openldap-сервер, чтобы принять экранированную строку?

ответ

0

Для Windows8 (и Server2012) есть исправление от Microsoft. http://support.microsoft.com/kb/2802148

+0

Это не проблема для этой проблемы: она исправляет ошибку кэширования схемы, когда вы вообще не можете делать запросы к OpenLDAP. – Somescout

Смежные вопросы