ldap 查询获取组中的所有用户 node.js

ldap query get all users in a group node.js

未能找到有关此事的任何信息。 我需要查询具有指定组名的活动目录服务器,并接收它包含的所有用户。

然后我可以遍历这些用户并使用他们的名字和姓氏 + 电子邮件 + phone + 帐户名。

是否可以使用 Node.js 实现所有这些? 谁能帮我摆脱这种头痛?

使用这个 link: https://www.npmjs.com/package/activedirectory#getUsersForGroup

var groupName = 'Employees';

var ad = new ActiveDirectory(config);
ad.getUsersForGroup(groupName, function(err, users) {
  if (err) {
    console.log('ERROR: ' +JSON.stringify(err));
    return;
  }

  if (! users) console.log('Group: ' + groupName + ' not found.');
  else {
    console.log(JSON.stringify(users));
  }
});

发布的另一个解决方案是针对 ActiveDirectory 的,作为更一般的答案,您需要一个查询,该查询将 return 来自组的“成员”属性。 我能够使用 ldapjs

完成此操作
import ldap from 'ldapjs'

const client = ldap.createClient({ url: ['ldap://localhost:389'] })
client.on('error', (err) => { console.log(err) } )
client.bind("cn=admin,dc=example,dc=com", "password", (err) => {console.log(err)})

function logCallback(err,res) {
    if(!res) {
        console.log(err)
        return
    }
    
    res.on('searchRequest', (searchRequest) => {
        console.log('searchRequest: ', searchRequest.messageID);
    });
    res.on('searchEntry', (entry) => {
        console.log('entry: ' + JSON.stringify(entry.object));
    });
    res.on('searchReference', (referral) => {
        console.log('referral: ' + referral.uris.join());
    });
    res.on('error', (err) => {
        console.error('error: ' + err.message);
    });
    res.on('end', (result) => {
        console.log('status: ' + result?.status);
    });
}

client.search("dc=example,dc=com",{filter:"(&(objectclass=groupofnames)(cn=users))",scope:"sub"},logCallback)
> searchRequest:  8
entry: {"dn":"cn=users,ou=Groups,dc=example,dc=com","controls":[],"cn":"users","description":"All Users","member":["uid=user,ou=Users,dc=example,dc=com","uid=user1,ou=Users,dc=example,dc=com","uid=user2,ou=Users,dc=example,dc=com"],"objectClass":["groupOfNames","top"]}
status: 0

return 值有一个“成员”字段,其中包含组中所有用户的列表。