如何在 NodeJS 中使用 ldapjs 连接 LDAP
How to connect LDAP using ldapjs in NodeJS
过去几天一直在研究 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中,它不包括最后一个回调函数,我尝试了它,因为提到的常见模式大多数操作都包括回调,所以我认为我可以有一点运气,我没有。
有和没有回调我都试过了,还是不行。
即使我将 url 更改为无效容器,ldapClient 容器也将始终 return 为真。
-- 到目前为止,James Thomas 的 已经在下面对此进行了解释 --
编辑:
我尝试将用户绑定到 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);
});
});
此代码不向屏幕和用于保存搜索方法 return 值的结果变量打印任何内容 returned 'true'.
任何人都可以分享它是如何完成的吗?
当您执行该函数时,ldapjs.createClient() 调用不会连接到服务器,而是设置您在调用返回的 "client" 对象上的方法时使用的身份验证凭据.
例如,您需要执行以下操作:
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);
});
过去几天一直在研究 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中,它不包括最后一个回调函数,我尝试了它,因为提到的常见模式大多数操作都包括回调,所以我认为我可以有一点运气,我没有。
有和没有回调我都试过了,还是不行。
即使我将 url 更改为无效容器,ldapClient 容器也将始终 return 为真。
-- 到目前为止,James Thomas 的
编辑:
我尝试将用户绑定到 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);
});
});
此代码不向屏幕和用于保存搜索方法 return 值的结果变量打印任何内容 returned 'true'.
任何人都可以分享它是如何完成的吗?
当您执行该函数时,ldapjs.createClient() 调用不会连接到服务器,而是设置您在调用返回的 "client" 对象上的方法时使用的身份验证凭据.
例如,您需要执行以下操作:
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);
});