在node.js和Express服务器上使用LDAP进行身份验证

时间:2019-06-03 18:19:16

标签: node.js express ldap passport.js

我正在尝试使用通行证-ldapauth将node.js服务器与LDAP服务器绑定。 事实是,发布请求向我发送了一个关于Postman的“错误请求”,因此我推断出属于该请求的某些代码是格式错误的...

var express = require('express');
var passport = require('passport');
var bodyParser = require('body-parser');
var LdapStrategy = require('passport-ldapauth');
var basicAuth = require('basic-auth');

var router = express.Router();
var app = express();

var fs = require('fs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(passport.initialize());
app.use('/', router);

app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
  res.header('Access-Control-Allow-Methods', 'OPTIONS, GET, POST, PUT, DELETE');
  if('OPTIONS' == req.method){
    res.sendStatus(200);
  } else {
    console.log(`${req.ip} ${req.method} ${req.url}`);
    next();
  }
})

var OPTS = {
  server: {
    url: 'ldaps://...',
    bindDN: 'CN=...,OU=...,DC=...,DC=...,DC=...',
    bindCredentials: '...',
    searchBase: 'OU=...,DC=...,DC=...,DC=...',
    searchFilter: '(&(objectcategory=person)(objectclass=user)(|(samaccountname={{username}})(mail={{email}})))',
    tlsOptions: {
      ca: [
        fs.readFileSync('./server/fileNameOfTheCertificate')
      ]
    }
  },
  usernameField: 'username',
  passwordField: 'password',
  credentialsLookup: basicAuth
};

passport.use(new LdapStrategy(OPTS));

app.post('/authenticate', passport.authenticate('ldapauth', {session: false}), function(req, res) {
  res.send({status: 'ok'});
});


app.listen('4300', function(){
  console.log('Server now listening on 4300');
})

0 个答案:

没有答案
相关问题