Паспорт-ldapauth: ошибка: getaddrinfo ENOTFOUND

Вот как я настроил свою стратегию Passport-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)

Мой вопрос: почему я получаю сообщение об ошибке? Я уверен, что URL-адрес и имя пользователя / пароль верны.


person Kristóf Horváth    schedule 23.08.2017    source источник


Ответы (2)


Эта ошибка имеет только одно значение: ваше приложение узла не может подключиться к серверу ldap. Возможно, вы указываете правильный IP-адрес / хост, но он недоступен с машины, на которой вы запускаете приложение узла.

Вы можете попробовать подключиться к ldap с помощью некоторых инструментов с того же компьютера и посмотреть, сможет ли он подключиться к серверу.

person Manish Kumawat    schedule 23.08.2017

У меня такая же ошибка при разработке. Я использовал restify (let restify = require('restify')) для вызова https, в консоли он показывает ошибку ENOTFOUND без определенного контекста. Затем я перехожу на другой подход

  1. https (require('https'))
  2. xhr (const XMLHttpRequest = require('xhr2'))

Я использую оба, чтобы выполнить ajax-вызов одного и того же API. Работает без ошибок.

person landscape1250    schedule 07.11.2017