如何使用NodeJS中的ldapjs连接LDAP

时间:2015-04-15 07:03:17

标签: javascript node.js active-directory ldap ldapjs

过去几天一直在玩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');
});

在给定的example中,它不包括最后一个回调函数,我尝试了它作为常见模式提到大多数操作包括回调所以我认为我可以有点运气,我没有“T

我也曾尝试过无回调,但仍无效。

即使我将网址更改为无效网址,ldapClient容器也会始终返回true。

- 到目前为止,詹姆斯·托马斯已经解释过answer以下 -

编辑:

我尝试将用户绑定到LDAP并执行搜索查询作为下面的代码段:

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

此代码不会向屏幕打印任何内容,而用于保存搜索方法返回值的结果变量返回“true”。

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

1 个答案:

答案 0 :(得分:2)

执行该函数时,ldapjs.createClient()调用不会连接到服务器,而是将凭据设置为在返回的"客户端"上调用方法时使用的身份验证。宾语。

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

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