正在我们系统中处理LDAP Active Directory登录。如果用户在那里,我需要显示用户名、电子邮件和个人资料图片。问题是我没有从响应中获得与个人资料图片相关的任何属性。经过一些研究,我发现有一个属性称为thumbnailPhoto
用户的缩略图照片。但在我的回复中没有得到它。我在activedirectory和passport-ldapauth npms中都尝试了不同的代码,但没有运气。
所以目前我想坚持使用passport-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
提供所有其他属性的个人资料图片(我想它需要)。
我试图['displayName', 'mail','thumbnailPhoto']
在 OPTS 中给出 searchAttributes: ,这只会给我给定的 Attributes 并且正在获取displayName
,mail
但不是thumbnailPhoto
。
任何帮助将不胜感激,谢谢。