up_*_*ons 12 ruby ldap ruby-on-rails
根据我所做的研究,似乎我需要发送一个特殊的OID和我的请求(1.2.840.113556.1.4.417)才能访问Deleted Objects容器.
我找不到使用"net-ldap"gem发送带有请求的特定控件的方法.有谁知道这是否可能?
还有另一个gem,ruby-ldap,看起来更灵活,似乎我可以根据我的请求发送控件(例如使用search_ext2()方法).
然而,无论我尝试什么,我都没有收回任何物品,即使我知道它们还没有被垃圾收集.
我的请求也包括过滤器"isDeleted = TRUE".
好吧,我终于想通了。人们需要使用ruby-ldap宝石。我的控件未发送的原因是 LDAP 协议版本 ( LDAP::LDAP_OPT_PROTOCOL_VERSION) 默认为 v2,显然它必须是 v3。
以下是一个有效的片段:
require 'ldap'
conn = LDAP::Conn.new('yourserver.example.com', 389)
conn.set_option(LDAP::LDAP_OPT_PROTOCOL_VERSION, 3)
conn.bind("CN=Administrator,CN=Users,DC=example,DC=com", "sekritpass")
# controlType: 1.2.840.113556.1.4.417 (LDAP_SERVER_SHOW_DELETED_OID)
control = LDAP::Control.new('1.2.840.113556.1.4.417')
conn.search_ext2('CN=Deleted Objects,DC=example,DC=com', LDAP::LDAP_SCOPE_SUBTREE, "(isDeleted=*)", nil, false, [control], nil)
Run Code Online (Sandbox Code Playgroud)
过滤器(isDeleted=*)不一定是必需的,您也可以简单地使用(objectClass=*). 如果需要,您还可以使用示波器LDAP::LDAP_SCOPE_ONELEVEL。
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |