Аутентификация с помощью модуля passport-ldapauth nodejs в экспрессе - PullRequest
0 голосов
/ 17 мая 2018

У меня проблемы с аутентификацией, аутентификация пользователя на сервере ldap.Я вставляю важный код ниже.Может кто-нибудь сказать мне, что недостающие части этого или этот модуль nodejs может делать то, что я хочу сделать?Я пробовал это в течение двух дней и не смог найти решение.

const passport = require('passport');
const ldapStrategy = require('passport-ldapauth').Startegy;

var LDAP_OPTS = {
usernameField: 'myAccountUsername',
passwordField: 'myPassword',
server: {
    url: 'ldap://xx.xx.x.xx:389',
    bindDN: 'dn related data',
    bindCredentials: 'adminAccountPassword',
    searchBase: 'dc=xyz,dc=com',
    searchFilter: '(sAmAccountName={{myUserNameForTheAccount}})'
},
};

passport.use(new ldapStrategy(LDAP_OPTS));

app.use(passport.initialize());


module.exports.login = function(req, res, next){


passport.authenticate('ldapauth', function(err, user, info){

    console.log('inside authent '+JSON.stringify(info))

    if(err){
        return next(err);
    }

    if(!user){
        res.status(401).json({ success: false, message: 'authentication failed' })
        // res.send({success: false})
        console.log('inside user: '+user)
    } else {
        res.status(200).json({success: true})
        // res.send({success: true})
    }

    console.log('after response..')

})(req, res, next)

Когда я запускаю это, я получаю {"message": "Отсутствуют учетные данные"}.Я погуглил много ресурсов, но не нашел подходящего.Есть примеры, использующие «passport-local», но я не смог найти пример «passport-ldapauth», в котором есть аутентификация пользователя по его имени пользователя и паролю.Даже в этом примере мы только что отправили запрос на сервер ldap, чтобы проверить существование пользователя, но я не знаю, как проверить его пароль после возвращения информации этого пользователя.

1 Ответ

0 голосов
/ 17 мая 2018

Страница github passport-ldapauth ссылается на ldapauth-fork проекта.Согласно документации говорится, что вам нужно добавить свойство bindProperty к вашему объекту конфигурации.

ldapauth-fork говорит, что bindProperty

     /**
     * Property of the LDAP user object to use when binding to verify
     * the password. E.g. name, email. Default: dn
     */
     bindProperty?: string;

Надеюсь, что это может помочь

...