我在验证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/