我正在尝试在节点项目“ ldapjs”中使用ldap js库:“ ^ 1.0.2”。 我已经成功地与ldap服务器建立了连接并获得了结果。但是由于某种原因,当我尝试从ldap的UI调用服务时,出现超时错误。如果我尝试直接在chrome中使用后端服务(因为这是一个get服务),则效果很好,但是当我从ui代码尝试时,ldap服务就会关闭。我在控制台中收到超时错误。
我的后端在Node中,前端代码在Vue中。我正在使用axios来调用我的后端服务。
ldap代码:
function getUserLdapDetails(id) {
return new Promise(async function (resolve, reject) {
var client;
try {
var response = {};
setTimeout(function () {
resolve('Not able to get Ldap details');
}, 5000);
var tlsOption = {
'rejectUnauthorized': true
}
client = ldap.createClient({
url: server,
tlsOptions: tlsOption
});
client.bind(userPrincipalName, password, (err, res) => {
console.log("In Ldap Bind and connection is establised :" + client.connected);
if (err) {
console.log(err);
return reject(err);
}
});
var opts = {
filter: "id=" + id,
scope: "sub",
attributes: [
"mail",
"sn",
"telephoneNumber",
"givenName"
]
};
client.search(searchOption, opts, function (err, res) {
if (err) {
console.log(err);
resolve(response);
}
res.on("searchEntry", function (entry, end) {
response.mail = entry.object.mail;
response.lastName = entry.object.sn;
response.firstNme = entry.object.givenName;
response.phone = entry.object.telephoneNumber;
resolve(response);
});
});
} catch (err) {
console.log(err);
return reject(err);
} finally {
client.unbind(function (err) {
if (err) {
console.log(err);
return reject(err);
}
});
}
}).catch((err) => {
console.log(err);
return err;
});
}
答案 0 :(得分:0)
最后,我找到了解决方案。有时,客户端会空转,并且在某些情况下,由于不同的原因,我们从ldap服务器获取了用于搜索的异常信息。
我发现甚至可以添加很多侦听器来监听这些事件。不幸的是,下面是一些文件。
以下是我要处理的更改
client = ldap.createClient({
url: server,
tlsOptions: tlsOption,
timeLimit: 7000,
reconnect: true
});
await client.on('connect', function () {
client.bind(userPrincipalName, password, (err, res) => {
console.log("In Ldap Bind and connection is establised :" + client.connected);
if (err) {
console.log(err);
return reject(err);
}
});
client.on('timeout', function (err) {
console.log('Timeout .....' + err);
});
client.on('error', function (err) {
console.warn('LDAP connection failed, it will reconnect', err);
});