2017-09-06 134 views
0

我正在用Node.js 6.11.0和MongoDB開發一個JavaScript web服務。我的Web服務需要執行LDAP查詢。爲什麼我無法訪問LDAP的所有屬性?

我正在使用ldapjs包(版本1.0.1)。下面我LDAP模塊的JavaScript文件:

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; 

我這個代碼查詢:

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(); 
    }); 
}); 

我不能查看我Apache目錄工作室使用相同的驗證參數與查看所有屬性。

Apache Directory Studio...

你能幫助我嗎?

編輯

我指定的屬性,但問題依然存在:

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

感謝

回答

0

雖然它應該返回所有屬性,如果沒有指定,嘗試添加屬性到您的搜索選項,例如:

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

嗨瑞恩使用,我編輯的問題。 – ilMattion

0

您應該允許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' 
      ]} 
     }; 
相關問題