我正在尝试使用通行证-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');
})