PagedResultsControl不会作为OpenLDAP搜索结果的一部分返回

时间:2019-10-30 14:38:21

标签: ldap openldap ldapjs

我们正在尝试使用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如下所示。

请提出建议。

0 个答案:

没有答案