我遇到问题身份验证为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服务器发送了一个请求来检查用户是否存在,但我不知道如何在返回该用户的信息后验证他的密码。
答案 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;
希望可以提供帮助