Passport-ldapauth:错误:getaddrinfo ENOTFOUND

时间:2017-08-23 11:34:59

标签: node.js typescript dns ldap passport.js

这就是我设置护照-ldapauth策略的方法:

let OPT = {
    server: {
        url: 'ldap://****:389',
        bindDN: "",
        bindCredentials: "",
        searchBase: 'ou=Users,dc=astron,dc=hu',
        searchFilter: "(uid={{username}})"
    },
    usernameField: 'username',
    passwordField: 'password',
};
passport.use(new LdapStrategy(OPT, function (user, done) {
    if (user != null) {
        return done(null, user);
    } else return done(new Error("i dont know"), null)
}))
app.use(passport.initialize())

这就是使用它的地方:

 async authenticate(req, res): Promise < boolean > {
         return new Promise < boolean > ((resolve,
                     reject) => {
                     let authenticate: express.RequestHandler = <express.RequestHandler>passport.authenticate('ldapauth', (error, user, info) => {
                if (error) {
                    return reject(error);
                }
                if (!user) {
                    return resolve(false);
                }
                req.user = user;
                resolve(true);
            });
            authenticate(req, res,
                null);
        }
        )
    }

我得到了这个错误:

  

错误:getaddrinfo ENOTFOUND **** ****:389

     

在errnoException(dns.js:28:10)

     

在GetAddrInfoReqWrap.onlookup [as oncomplete](dns.js:76:26)

我的问题是为什么我会收到错误?我确定网址和用户名/密码是正确的。

2 个答案:

答案 0 :(得分:0)

此错误只有一个含义,您的节点应用程序无法连接到ldap服务器。可能是您提供了正确的IP /主机,但无法从运行节点应用程序的计算机上访问它。

您可以尝试使用同一台计算机上的某些工具连接到ldap,看看它是否能够连接到服务器。

答案 1 :(得分:0)

开发时我遇到同样的错误。我使用restify(dd)进行https调用,在控制台中显示let restify = require('restify')错误而没有特定的上下文。 然后我切换到使用其他方法

  1. https(ENOTFOUND
  2. xhr(require('https')
  3. 我使用它们来对相同的API进行ajax调用。它没有错误。