PagedResultsControl не возвращается как часть результатов поиска для OpenLDAP - PullRequest
0 голосов
/ 30 октября 2019

Мы пытаемся получить результаты, используя функциональность 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, как показано здесь.

Пожалуйста, предложите.

...