0

以下将帐户移动到另一个 OU 的代码失败:

@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 服务器的实际命令,以便我可以调试问题?

4

1 回答 1

0

我的猜测是您的属性字符串没有被正确转义。也许尝试使用单引号并传递名称的确切字符串。但是你需要//吗?

如果你只是这样做:

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 是否允许将哈希或斜杠作为属性。

更新: 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/

于 2018-12-24T12:15:17.853 回答