【发布时间】:2018-11-10 09:04:33
【问题描述】:
我正在尝试构建一个 NodeJS 服务器并计划使用组织的 Microsoft Active Directory 进行身份验证。
我对许多包(activedirectory、activedirectory2、ldapjs 等)都进行了同样的尝试
但它们似乎都不适合我。
我提供的是 LDAP URL,下面是我的代码。
var ldapjs = require('ldapjs');
var config = { url: 'ldap://mycompany.com/dc=mycompany,dc=com'
,timeout: 10
,reconnect: {
"initialDelay": 100,
"maxDelay": 500,
"failAfter": 5
}
}
var username = "user_id@mycompany.com";
var password="password";
const ldapClient = ldapjs.createClient(config);
ldapClient.bind(username, password, function (err) {
console.log("Logging data...");
ldapClient.search('dc=mycompany,dc=com', function (err, search) {
if (err) {
console.log('ERROR: ' +JSON.stringify(err));
return;
}
search.on('searchEntry', function (err,entry) {
if (err) {
console.log('ERROR: ' +JSON.stringify(err));
return;
}
else{
var user = entry.object;
console.log("Done.");
return;
}
});
});
});
有时它可以工作,但在大多数情况下,我不断收到以下错误(可能是当它选择不同的 IP 时)
Error: connect ETIMEDOUT <ip address>:389
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
让我困惑的是;如果我在我的 C# 应用程序中尝试使用相同的 LDAP URL,它可以正常工作。
.Net 应用程序使用它的方式与 NodeJS 使用的方式有区别吗?
我可以通过某种方式更改我的代码以使其正常工作吗?
【问题讨论】: