0

正在我们系统中处理LDAP Active Directory登录。如果用户在那里,我需要显示用户名、电子邮件和个人资料图片。问题是我没有从响应中获得与个人资料图片相关的任何属性。经过一些研究,我发现有一个属性称为thumbnailPhoto用户的缩略图照片。但在我的回复中没有得到它。我在activedirectorypassport-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 并且正在获取displayNamemail但不是thumbnailPhoto

任何帮助将不胜感激,谢谢。

4

0 回答 0