Мы пытаемся получить результаты, используя функциональность ldap_search. Мы ожидаем PagedResultsControl в результатах при поиске с включенной нумерацией страниц. Однако результат не содержит какого-либо объекта управления.
У нас есть экземпляр OpenLDAP. Мы используем ldapjs для постраничного поиска. Мы могли бы выполнить тот же код для ApacheDS и успешно захватить cookie.
const fs = require('fs');
var client = ldap.createClient({
url: 'ldap://<ldap_host>:389'
});
console.log('client created.');
client.bind('<Bind DN>', '<Bind Password>', function(err) {
if (err) {
console.log('client.bind error', err);
} else {
console.log('bind is success');
var opts = {
filter: '(objectClass=*)',
scope: 'sub',
attributes: [],
attrsOnly: true,
paged: {
pageSize: 100,
pagePause: true
}
};
client.search('<Search Base>', opts, function(err, res) {
if (err) {
console.log('error', err);
} else {
var count = 1;
res.on('searchEntry', function(entry) {
console.log('page 1 entry ' + count++ + ' : ' + JSON.stringify(entry.object));
});
res.on('page', function(result, cb) {
console.log('page end', result.controls);
fs.writeFile("./cookie1", result.controls[0].value.cookie, function(err) {//Expecting PagedResultControl with cookie
if (err) {
return console.log(err);
}
console.log("The file was saved!");
client.unbind(function(err) {
if (err) {
console.log('error unbind : ', err);
} else {
console.log('unbind is success');
}
});
});
});
res.on('error', function(err) {
console.error('error: ' + err.message);
});
res.on('end', function(result) {
console.log('result: ' + result);
client.unbind(function(err) {
if (err) {
console.log('error unbind : ', err);
} else {
console.log('unbind is success');
}
});
});
}
});
}
});
Мы ожидаем cookie result.controls[0].value.cookie
, как показано здесь.
Пожалуйста, предложите.