我正在尝试构建一个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时)。
有时它可以工作,但大部分时间我会不停地收到以下错误消息(可能是当它选择不同的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使用方式有区别吗?
我能否通过更改代码使其正常工作?
exports.login = (username, password, next) => {ad.authenticate(username + "@,my.company.com", password, (err, auth) => {...
- Alex Weitz