如何在NodeJS中使用ldapjs连接LDAP

过去几天一直在使用NodeJS,并使用ldapjs模块运行LDAP连接。 我尝试连接的背景故事Active-Directory服务器支持LDAPv3。

以下是我用来连接到LDAP服务器的代码:

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

在给定的例子中 ,它不包括最后一个callback函数,我尝试了它,因为大多数操作都包含callback的常见模式,所以我想我可以有一点运气,我没有。

我也尝试过和没有callback,仍然没有工作。

即使将url更改为无效URL,ldapClient容器也将始终返回true。

– 到目前为止,詹姆斯·托马斯的答案已经在下面解释了这一点 –

编辑:

我尝试绑定到LDAP的用户,并执行search查询作为下面的代码片段:

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

此代码不会将任何内容输出到用于保存search方法返回值“true”的屏幕和结果variables。

任何人都可以分享如何完成?

当您执行该函数时,ldapjs.createClient()调用不会连接到服务器,而是设置在调用返回的“客户端”对象上的方法时使用的身份validation的凭据。

例如,您需要执行以下操作:

 var client = ldap.createClient({url: 'ldap://ldap.myhost.com.au:389'}) var entry = { cn: 'foo', sn: 'bar', email: ['foo@bar.com', 'foo1@bar.com'], objectclass: 'fooPerson' }; client.add('cn=foo, o=example', entry, function(err) { assert.ifError(err); });