аутентификация ldap не авторизована - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь аутентифицировать пользователя с помощью клиента 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}})',
    }
};

1 Ответ

0 голосов
/ 22 мая 2019

В searchFilter: '(sAMAccountName={{$username}})' есть опечатка: не должно быть символа $, может быть, это просто опечатка в вашем посте, но если она есть и в вашем коде, это первое, что нужно исправить.

Проблема searchBase также может быть проблемой, поскольку она указывает на CN=Users,DC=mydomain,DC=us, а атрибут CN используется для «конечных объектов» (например, для записи пользователя, но не для контейнера, подобного «организационной единице»).в котором вы можете найти пользователей), так что вместо этого вроде бы ou=Users,DC=mydomain,DC=us будет в порядке, но если вы не уверены, DC=mydomain,DC=us в порядке, если ваш каталог не слишком большой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...