How can I retrieve deleted objects from Active Directory with Ruby? -


from research i've done, appears need send special oid request (1.2.840.113556.1.4.417) in order access deleted objects container.

i couldn't find way send specific control request using "net-ldap" gem. know if possible?

there gem, ruby-ldap, appears more flexible , seems can send controls request (e.g. using search_ext2() method).

however, no matter try, not getting objects, though know haven't been garbage collected yet.

i'm including filter "isdeleted=true" requests well.

ok, figured out. 1 need use ruby-ldap gem. reason controls not being sent because ldap protocol version (ldap::ldap_opt_protocol_version) had defaulted v2 , apparently must v3.

the following snippet works:

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) 

the filter (isdeleted=*) isn't required, use (objectclass=*). can use scope ldap::ldap_scope_onelevel if desired.


Comments