Есть ли способ напечатать точную команду, отправляемую на сервер LDAP с помощью ruby-net-ldap? - PullRequest
0 голосов
/ 24 декабря 2018

Сбой следующего кода для переноса учетной записи в другое подразделение:

@net_ldap.rename(
  olddn:"CN=TestAMS\\,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt",
  newrdn:"CN=#TestAMS,Henry",
  delete_attributes:true,
  new_superior:"OU=Terminated Accounts,OU=No Sync,DC=nj,DC=tri,DC=nrt"
)

Я получаю следующую ошибку:

#<OpenStruct code=64, error_message="00000057: LdapErr: DSID-0C090B07, comment: Error in attribute conversion operation, data 0, v1db1\x00", matched_dn="", message="Naming Violation">

Есть ли способ распечатать фактическоекоманда, которая отправляется на сервер LDAP, чтобы я мог отладить проблему?

1 Ответ

0 голосов
/ 24 декабря 2018

Я предполагаю, что ваша строка атрибута не экранирована должным образом.Возможно, попробуйте использовать одинарные кавычки и передать точную строку имен.Но вам нужно //?

Если вы просто сделаете:

puts "CN=TestAMS\\,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt"

, он выдаст:

CN=TestAMS\,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt

Так что вы можете избавиться от \ или, если это действительно так, для целевого объекта, который вы хотите переименовать, оставьте его.В ruby ​​вы должны использовать двойные кавычки только тогда, когда вам нужна интерполяция строк.

@net_ldap.rename(
  olddn:'CN=TestAMS,Henry,OU=Flemington,OU=NJ Region 4,OU=Agents,DC=nj,DC=tri,DC=nrt',
  newrdn:'CN=TestAMS,Henry',
  delete_attributes:true,
  new_superior:'OU=Terminated Accounts,OU=No Sync,DC=nj,DC=tri,DC=nrt'
)

Но я не уверен, разрешает ли LDAP хэши или слэши в качестве атрибутов.

UPDATE: ruby ​​net / ldapэто просто реализация ruby, но из вашего терминала смотрите:

man ldap
#/name to search for name and we find:

# Distinguished  names  (DN)  (and relative distinguished names (RDN) to be passed to the LDAP routines should conform to
   RFC 4514 UTF-8 string representation.

Так что для получения дополнительной информации см. https://datatracker.ietf.org/doc/rfc4514/

Из этого видно, что избавиться от обратных слешей и хэштегов, которые я сделал в моемпример.Но также для получения более подробной информации о том, какие строки необходимо экранировать, см. https://ldap.com/ldap-dns-and-rdns/

...