我在验证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”:“ Missing certificate”}。我在Google上搜索了许多资源,但没有找到合适的资源。有使用“ passport-local”的示例,但是我找不到使用用户名和密码对用户进行身份验证的“ passport-ldapauth”示例。即使在这个例子中,我们也只是向ldap服务器发送了一个请求,以检查用户的存在,但是在返回该用户的信息后,我不知道如何验证其密码。

最佳答案

护照-ldapauth的github页面链接到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;


希望能对您有所帮助

关于node.js - 在Express中使用通行证-ldapauth nodejs模块进行身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50385444/

10-12 16:06