Я пытаюсь связать свой сервер node.js с сервером LDAP, используя passport-ldapauth.
Дело в том, что почтовый запрос отправил мне «плохой запрос» на Почтальона, поэтому я вывел некоторый фрагмент кода, который принадлежит запросу, неправильно сформированным ...
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');
})