Ответ 1
ОК, я, наконец, понял это. Нужно использовать драгоценный камень 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)
Фильтр (isDeleted=*)
необязательно требуется, вы также можете просто использовать (objectClass=*)
. Вы также можете использовать область LDAP::LDAP_SCOPE_ONELEVEL
, если хотите.