2017-09-06 1 views
0

Je développe un service web JavaScript avec Node.js 6.11.0 et MongoDB. Mes services Web doivent effectuer une requête LDAP. J'utilise ldapjs package (version 1.0.1).Pourquoi ne puis-je pas accéder à tous les attributs de LDAP?

Ci-dessous mon module fichier JavaScript LDAP:

var ldap = require("ldapjs"); 

function bind(username, password, callback) { 
    try { 
     let client = _getClient(global.config.ldap.host); 
     client.bind(username, password, function (err) { 
      callback(err, client); 
     }); 
    } catch (err) { 
     callback(err); 
    } 
} 

function search(client, dn, opts, callback) { 

    let arr = []; 
    if (!opts) opts = {}; 

    client.search(dn, opts, function (err, res) { 
     if (err) { 
      callback(err); 
      return; 
     } 

     res.on('searchEntry', function (entry) { 
      arr.push(entry); 
     }); 
     res.on('error', function (err) { 
      callback(err); 
     }); 
     res.on('end', function (result) { 
      global.logger.log('status: ' + result.status); 
      callback(undefined, arr); 
     }); 
    }); 
} 

function _getClient(host) { 
    return ldap.createClient({ 
     url: host 
    }); 
} 

exports.bind = bind; 
exports.search = search; 

Je demande dans le cas de ce code:

let appUser = "utente"; 
let appPass = "password"; 

let userDn = global.config.userDn.replace("{uid}", appUser); 

ldapUtils.bind(userDn, appPass, function (err, client) { 
    if (err) { 
     return; 
    } 

    global.logger.info("Bind success..."); 

    var opts = { 
     scope: "sub" 
    }; 

    ldapUtils.search(client, global.config.shopsDn, opts, function (err, data) { 
     if (err) { 
      global.logger.error(err); 
      return; 
     } 

     global.logger.info("Search success..."); 
     data[3].attributes[0]._vals[0...n]; // Here I cannot view all attributes. 

     res.send(); 
    }); 
}); 

Je ne peux pas voir tous les attributs que je peux voir avec Apache Directory Studio en utilisant les mêmes paramètres d'authentification.

Apache Directory Studio...

Pouvez-vous me aider?

Modifier

Je spécifié les attributs, mais le problème reste:

var opts = { 
     scope: "sub", 
     attributes: ["dn", "cn", "customAttribute"] 
}; 

Merci

Répondre

0

Bien qu'il soit censé retourner tous les attributs si ne sont pas précisés, essayez d'ajouter des attributs à votre options de recherche, par exemple:

var opts = { 
    scope: "sub" 
    attributes: ["dn", "cn", "description", "objectGUID"] 
}; 
+0

Salut Ryan, j'ai édité la question. – ilMattion

0

Vous devez autoriser l'utilisation sur paging

 var opts = { 
     paged: true, 
     attributes = { 
      user: [ 
      'dn', 'distinguishedName', 
      'userPrincipalName', 'sAMAccountName', /* 'objectSID', */ 'mail', 
      'lockoutTime', 'whenCreated', 'pwdLastSet', 
      'userAccountControl', 
      'employeeID', 'sn', 'givenName', 'initials', 'cn', 'displayName', 
      'comment', 'description' 
      ], 
      group: [ 
      'dn', 'cn', 'description', 'distinguishedName', 
      'objectCategory' 
      ]} 
     };