Been playing around with NodeJS in the past few days and run stuck with LDAP connection using ldapjs module. Background story, the Active-Directory server, that I am trying to connect to, supports LDAPv3.
Below is the code I used to connect to the LDAP server:
var ldapClient = ldap.createClient({url: 'ldap://ldap.myhost.com.au:389'}, function (err){
if (err) {
console.log('Failed');
process.exit(1);
}
else
console.log('Through');
});
In the given example, it doesn't include the last callback function, I tried it as the common pattern mentioned that most operations include callback so I thought I could have a bit of luck with it, I didn't.
I have also tried with and without the callback, still didn't work.
The ldapClient container will always return true even when I change the url into an invalid one.
-- Up to this point it has been explained by James Thomas' answer below --
EDIT:
I tried binding the user onto LDAP and do a search query as the snippet below:
ldapClient.bind('cn=drupal,ou=SystemAccount,dc=myhost,dc=com,dc=au', '', function (err) {
if (err) {
console.log('LDAP binding failed... disconnecting');
process.exit(1);
}
});
var opts = {
scope: 'sub'
};
var result = ldapClient.search('ou=Users,dc=myhost,dc=com,dc=au', opts, function(err, res) {
assert.ifError(err);
res.on('searchEntry', function(entry) {
console.log('entry: ' + JSON.stringify(entry));
});
res.on('searchReference', function(referral) {
console.log('referral: ' + referral.uris.join());
});
res.on('error', function(err) {
console.error('error: ' + err.message);
});
res.on('end', function(result) {
console.log('status: ' + result.status);
});
});
This code prints nothing to the screen and result variable that is used to hold the search method return value returned 'true'.
Anyone could share how it's done?