Получить конкретный атрибут объекта из поиска ldapjs - PullRequest
0 голосов
/ 07 сентября 2018

Я привязываю и аутентифицирую пользователя к ldap, как показано в коде ниже. Теперь я получаю все атрибуты объекта, я хочу получить, например, только «distingushName». Есть ли способ в ldapjs для этого? Это вопрос фильтра?

Спасибо!

'use strict';
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
var ldap = require('ldapjs');
const assert = require('assert');

var creds = {
  url: "ldap://************.local:389",
  bindDN: "DC=***,DC=***,DC=local"
};

var opts = {
  filter: "(&(objectClass=user))",
  scope: "sub",
  client: "*"
};
//binding
function authDN(user, baseDN, password, cb) {
  client.bind(baseDN, password, function (err) {
    client.unbind();
    cb(err === null, err);
  });
}

function output(res, err) {				
  if (res) {
    console.log('success :' + res);
  } else {
    console.log(['Error :',err.code, err.dn, err.message ]);
  }
}

var client = ldap.createClient(creds);
authDN(client, 'username', 'password', output);

//search
  client.search('CN=*** ,OU=****,...,OU=****,DC=***,DC=***,DC=local', opts, function(err, res) {
  assert.ifError(err);

  res.on('searchEntry', function(entry) {
    console.log('entry: ' + JSON.stringify(entry.object));
  });
  res.on('searchReference', function(referral) {
    console.log('referral: ' + referral.uris.join());
  });
  res.on('error', function(err) {
    console.error('error: ' + err.message);
  });
  res.on('end', function(result) {
    console.log('status: ' + result.status);
    console.log('result: ' + result);
    process.exit(1);
  });

});

1 Ответ

0 голосов
/ 07 сентября 2018

нашел, может кому-нибудь помочь =)

Я только что добавил (атрибуты: ['Однозначное имя']) к параметрам, как показано ниже:

var opts = {
  filter: "(&(objectClass=user))",
  scope: "sub",
  client: "*",
  attributes: ['distinguishedName']
};
...