如何在activedirectory2的LDAP查询结果中包含指定字段?
问题描述
我正在使用activedirectory2库查询LDAP服务器,find方法能正常运行,但返回结果里没有我需要的Job Title字段。
我的代码如下:
let ActiveDirectory = require('activedirectory2'); let config = { url: 'ldap://myservername', baseDN: 'OU=myOU,O=myOrg', } let ad = new ActiveDirectory(config); ad.authenticate(user, password, function (err, auth) { if (err) { console.log('ERROR0: ' + JSON.stringify(err)); return; } if (auth) { console.log('Authenticated!'); let query = "&(objectClass=*)(CN=Amy*)"; ad.find(query, (err, results) => { if ((err) || (!results)) { console.log('ERROR1: ' + err); return; } console.log(results.other[0]); }); } else { console.log('Authentication failed!'); } });
当前返回结果:
Authenticated! { dn: 'CN=Amy Tomson,OU=myOU,O=myOrg', mail: 'amyt@myOU.myOrg', sn: 'Amy', cn: 'Amy Tomson' }
如何让返回结果包含Job Title字段?
解决方案
要获取Job Title字段,你需要明确指定要查询的LDAP属性,因为activedirectory2的find方法默认仅返回部分常用属性。
- 确认属性映射:在Active Directory中,Job Title对应的LDAP属性名为
title,需确保该属性在你的AD服务器中已为目标用户赋值。 - 修改
find方法调用:activedirectory2的find方法支持第三个参数,用于指定需要返回的属性列表。调整代码如下:
// 保持原有认证逻辑不变 if (auth) { console.log('Authenticated!'); let query = "&(objectClass=*)(CN=Amy*)"; // 指定需返回的属性,添加title(对应Job Title) let desiredAttributes = ['dn', 'mail', 'sn', 'cn', 'title']; ad.find(query, desiredAttributes, (err, results) => { if ((err) || (!results)) { console.log('ERROR1: ' + err); return; } console.log(results.other[0]); }); }
如果需要获取用户的所有LDAP属性,可以直接传入['*']作为属性参数:
ad.find(query, ['*'], (err, results) => { // 处理返回结果 });
修改后,返回结果中会包含title字段,对应你需要的Job Title信息。
内容的提问来源于stack exchange,提问作者The KNVB
相关产品推荐
相关产品推荐

