1

I'm trying to deployed a working Nodejs server on windows to Linux machine. Using passport-ldapauth module to login to our company LDAP server I'm getting:

"ConnectionError: ldaps://ldap.XXX.com:636 closed" In windows deployment i didn't had any problem,

Here is the server code:

var express = require('express')
 , http = require('http')
 , express = require('express')
 , routes = require('./routes')
 , http = require('http')
 , passport = require('passport')
 , flash = require('connect-flash')
 , fs = require('fs')
 , ldapStrategy = require('passport-ldapauth')
 , path = require('path');

var ldapGroupName = "XXX_GROUP";
var app = express();
var ldapOptions = {
 server : {
  url : 'ldaps://ldap.XXX.com:636',
  searchBase : 'o=XXX.com',
  searchFilter : '(uid={{username}})',
  tlsOptions : {
   ca : [ fs.readFileSync('/etc/ssl/certs/XXX.crt') ]
  }
 }
};

var opts = {
 filter : '(cn='+ldapGroupName+')',
 scope : 'sub'
};

//configure passport
passport.use(new ldapStrategy(ldapOptions));

var app = express();
var server = http.createServer(app);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger()); 
app.use(express.bodyParser());

app.use(express.cookieParser());
app.use(express.json({limit: '50mb'}));
app.use(express.urlencoded({limit: '50mb'}));
app.use(express.session({secret:'Password'})); 
app.use(passport.initialize());
app.use(passport.session());
app.use(flash());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'WebContent')));

  passport.serializeUser(function(user, done) {
 done(null, user);
});

passport.deserializeUser(function(id, done) {
 done(null, id);
});

   app.post('/login', function(req, res, next) {
 passport.authenticate('ldapauth', function(err, user, info) {
  if (info) {
   console.log('info: ' + info.message);
   res.send({
    status : 'err',
    message : info.message
   });
   return;
  }
  if (err) {
   console.log('err: ' + err);
   res.send({
    status : 'err',
    message : err
   });
   return;
  }
  if (!user) {
   return res.redirect('/');
  }
  req.logIn(user, function(err) {
   req.session.cookie.expires = new Date(Date.now() + 1000 * 60 * 30); 
   if (err) {
    return next(err);
   }
   return res.send({
    status : 'ok' , 
    name : user.givenName
   });
  });
 })(req, res, next);
});

server.listen(4002);
console.log("started port: 4002");

Am I'm missing something? do i need to install the certification?

Xoerk
  • 55
  • 7

1 Answers1

0

Ok I managed to find the answer, adding to my server.js at the top:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";

Thanks to: LDAP Bind Error using node.js and ldapjs

Community
  • 1
  • 1
Xoerk
  • 55
  • 7