node.js - 从 ldapjs 搜索中获取特定对象属性

标签 node.js authentication authorization distinguishedname ldapjs

我正在将用户绑定(bind)到 ldap 并对其进行身份验证,如下面的代码所示。 现在我正在获取对象的所有属性,例如我想要的是仅获取“distingushedName”。 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);
  });

});

最佳答案

找到了,它可能对某人有帮助=)

我刚刚将(属性:['distinguishedName'])添加到如下选项:

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

关于node.js - 从 ldapjs 搜索中获取特定对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52218928/

相关文章:

java - 在 Java 6 上运行的 JMX 客户端/服务器上支持 Kerberos 身份验证/授权

c# - 可以在 ASP.NET MVC 2 的区域级别 [Authorize] 吗?

android - node.js 返回 null 推送消息

node.js - Reddit api session cookie 格式?

unit-testing - 在 Node 中模拟依赖

java - 在 WebSphere (Liberty) 中调用哪个 API 来解决使用自定义用户注册表登录失败的根本原因?

django - 处理 Django 用户订阅到期日期

c# - 不允许子操作对添加到全局过滤器的过滤器执行重定向操作异常

node.js - 在 GAE Flex 上使用 admin SDK node.js 禁用 Firebase 数据库的日志记录

node.js - 是我还是毛线?