使用passport-ldapauth nodejs模块在快速

时间:2018-05-17 07:11:02

标签: node.js express passport.js

我遇到问题身份验证为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)

当我运行此操作时,我收到一条{“消息”:“缺少凭据”}。我搜索了许多资源,但没找到合适的资源。有一些使用“本地护照”的例子,但我找不到“passport-ldapauth”的例子,该例子用他的用户名&密码。即使在这个例子中,我们只是向ldap服务器发送了一个请求来检查用户是否存在,但我不知道如何在返回该用户的信息后验证他的密码。

1 个答案:

答案 0 :(得分:0)

passport-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;

希望可以提供帮助