我们正在使用 LDAP Active Directory 登录。如果用户在那里,我需要显示用户名,电子邮件和个人资料图片。问题是没有从响应中获取与个人资料照片相关的任何属性。经过一番研究,我发现有一个名为thumbnailPhoto
的属性,即用户的缩略图照片。但是我没有得到答复。我在 activedirectory 和 passport-ldapauth npms 中尝试了不同的代码,但是没有运气。
因此,目前我想坚持使用护照-ldapauth npm。这是我的代码。
var express = require('express')
var app = express();
var bodyParser = require('body-parser');
var multer = require('multer');
var passport = require('passport');
var LdapStrategy = require('passport-ldapauth');
app.use(bodyParser.urlencoded({extended:true}));
app.use(bodyParser.json());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept");
next();
});
var OPTS = {
server: {
"url": "ldap://ip-address:389",
"bindDN": "cn=username,ou=Users,ou=user-other-ou,dc=dcname,dc=com",
"bindCredentials": "password",
"searchBase": "dc=dcname,dc=lan",
"searchFilter": "(sAMAccountName={{username}})",
},
};
passport.use(new LdapStrategy(OPTS));
app.get('/api/login', function(req, res, next) {
passport.authenticate('ldapauth', {session: false}, function(err, user, info) {
if (err) {
return res.send({ success : false, message : 'authentication failed',
"user": [] });
}
if (! user) {
return res.send({ success : false, message : 'authentication failed', "user": [] });
}
return res.send({ success : true, message : 'authentication succeeded', "user": user });
})(req, res, next);
用户需要在其中提供个人资料图片(我想应该是thumbnailPhoto
)以及所有其他属性的地方。
我尝试在OPTS中提供searchAttributes:['displayName', 'mail','thumbnailPhoto']
,这将只给我给定的Attributes,并且得到displayName
,mail
,而不是thumbnailPhoto
。
任何帮助将不胜感激,谢谢。