如何解决使用ldapjs创建与OpenLDAP服务器的LDAP连接的最佳方法是什么?
尝试建立与OpenLDAP服务器的客户端连接时出现错误。错误消息没有帮助。我在OpenLDAP设置或配置中缺少什么吗?
function createLDAPClient () {
return new Promise(function (resolve,reject) {
if(client.connected) return resolve();
client = ldap.createClient({
url: 'ldap://localhost:389',strictDN: false,timeout: 10000,connectTimeout: 10000
//disableQueue: true
});
client.on('connect',function () {
// console.log("LDAP connected");
resolve();
});
client.on('error',function (err) {
// console.log("ldap client error",err);
// idle timeout
if(err.code === 'ECONNRESET') {
return reject();
}
reject();
});
});
}
遇到错误
{ InvalidDnSyntaxError: invalid DN
at messageCallback (D:\Sites\Hermes\opt\node_modules\ldapjs\lib\client\client.js:1419:45)
at Parser.onMessage (D:\Sites\Hermes\opt\node_modules\ldapjs\lib\client\client.js:1089:14)
at Parser.emit (events.js:198:13)
at Parser.write (D:\Sites\Hermes\opt\node_modules\ldapjs\lib\messages\parser.js:111:8)
at Socket.onData (D:\Sites\Hermes\opt\node_modules\ldapjs\lib\client\client.js:1076:22)
at Socket.emit (events.js:198:13)
at addChunk (_stream_readable.js:288:12)
at readableAddChunk (_stream_readable.js:269:11)
at Socket.Readable.push (_stream_readable.js:224:10)
at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17) lde_message: 'invalid DN',lde_dn: null
}
解决方法
这个问题使我难以理解,因为我看不到错误发生在哪里。答案是解决此处所示的绑定函数中的用户名:
function bind (user) {
return new Promise(function (resolve,reject) {
return createLDAPClient()
.then(function () {
//console.log("client should be bound",!client.unbound);
// client.bind(user.username,user.password,function (err) {
// console.log("attempting bind",user);
var ldapuser = user.username;
if( config.ldap.type == 'OpenLDAP'){
ldapuser = 'cn=' + user.username + ',' + config.ldap.dc;
}
client.bind(ldapuser,function (err) {
//console.log("user bind callback,err:",!!err);
if(err) {
// console.log("error type",typeof err,Object.keys(err),err.stack);
console.error(err);
// bad password
if(err.stack.indexOf("InvalidCredentialsError") !== -1) {
console.log("bad password",user);
reject({
msg: 'Invalid credentials - 101'
});
}
reject({
msg: 'Error connecting to LDAP server',error: err
});
}
resolve();
});
});
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。