Я пытаюсь аутентифицировать пользователя с помощью клиента LDAP на NodeJS.Клиентская библиотека имеет паспорт.
var express = require('express'),
passport = require('passport'),
bodyParser = require('body-parser'),
LdapStrategy = require('passport-ldapauth');
var app = express();
var LdapStrategy = require('passport-ldapauth').Strategy;
var OPTS = {
server: {
//url: 'ldap://dc02.mydomain.us/DC=mydomain,DC=us',
url: 'ldap://dc02.mydomain.us',
//bindDN: 'ldapadmin@mydomain.us',
bindDN: 'ldapadmin',
bindCredentials: 'mypassword',
searchBase: 'ou=Users,DC=mydomain,DC=us',
searchFilter: '(sAMAccountName={{username}})',
}
};
passport.use(new LdapStrategy(OPTS));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(passport.initialize());
app.post('/login', passport.authenticate('ldapauth', {session: false}), function(req, res, err) {
res.send({status: 'ok'});
});
app.listen(8080);
Использование Почтальона Я отправляю:
localhost:8080/login
Body(JSON): { "username": "myuser","password":"mypassword" }
Я получаю «401 Несанкционированный».
ldapsearch -H ldap://dc02.mydomain.us -x -W -D "ldapadmin@mydomain.us" -b "CN=Users,DC=mydomain,DC=us" "(sAMAccountName=$userid)"
работает.
Мысли?
// ********************************************** за работой ********************************************** //
var OPTS = {
server: {
url: 'ldap://dc02.mydomain.us',
bindDN: 'ldapadmin',
bindCredentials: 'mypassword',
searchBase: 'DC=mydomain,DC=us',
searchFilter: '(sAMAccountName={{username}})',
}
};