2017-08-23 16 views
0

これは私が私のパスポートldapauth戦略を設定する方法です:パスポート-ldapauth:エラー:のgetaddrinfo ENOTFOUND

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); 
     } 
     ) 
    } 

、私はこのエラーを取得します:

Error: getaddrinfo ENOTFOUND **** ****:389

at errnoException (dns.js:28:10)

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

私の質問はなぜエラーになりますか?私は、URLとユーザー名/パスワードが正しいと確信しています。

答えて

0

このエラーの意味は1つだけです。ノードアプリケーションはldapサーバーに接続できません。正しいIP /ホストを提供しているかもしれませんが、ノードアプリケーションを実行しているマシンからはアクセスできません。

同じマシンのツールを使用してldapに接続し、サーバーに接続できるかどうかを確認できます。

+0

ありがとうございます –

0

開発時に同じエラーがあります。私は、特定のコンテキストなしでENOTFOUNDエラーを表示するコンソールで、httpsを呼び出すためにrestify(let restify = require('restify'))を使用しました。 は、それから私は、私は同じAPIへのAJAX呼び出しを行うために両方を使用

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

他のアプローチを使用するようにスイッチ。それは間違いなく動作します。

関連する問題