ldapjs 创建模拟用户并执行搜索

标签 ldap mocha.js ldapjs

我正在创建一个auth middleware app使用 LDAP,但我很难进行搜索。

我使用 Mocha 进行测试,并创建了一个 util.js 来创建模拟 ldapjs 服务器:

let server = require('../mocks/ldapServer');
const ldap = require('ldapjs');    

let ldapEntities = {
  'cn=root,dc=example,dc=com,o=example': {
    dn: 'cn=root,dc=example,dc=com',
    objectclass: 'organizationalRole',
    cn: 'Manager'
  },
  'cn=ABC,dc=example,dc=com,o=example': {
    dn: 'cn=ABC,dc=example,dc=com,o=example',
    objectclass: 'organizationalUnit',
    cn: 'ABC'
  },
  'cn=Bob Johnson,ou=ABC,dc=example,dc=com,o=example': {
    cn: 'Bob Johnson',
    dn: 'cn=Bob Johnson,ou=ABC,dc=example,dc=com,o=example',
    sn: 'Johnson',
    objectClass: 'inetOrgPerson'
  },
  'cn=Don Doddson,dc=example,dc=com,o=example': {
    cn: 'Don Doddson',
    dn: 'cn=Don Doddson,dc=example,dc=com,o=example',
    sn: 'Doddson',
    objectClass: 'inetOrgPerson',
    userPassword: 'rubbishpassword'
  }
};    

before(done => {
  server.start(1389, () => {    

    let ldapClient = ldap.createClient({
      url: process.env.DIRECTORY_SYSTEM_AGENT
    });    

    ldapClient.bind(process.env.LDAP_ADMIN, process.env.LDAP_SECRET, error => {    

      if (error) {
        return console.log('Error binding to LDAP: ' + error.message);
      }    

      //Bound to server, creating test accounts
      for (let i in ldapEntities) {
        ldapClient.add(i, ldapEntities[i], error => {
          if (error) {
            console.error(error);
          }
        });
      }    

    });
    done();
  });
});    

after(done => {
  server.stop(done);
});

我正在搜索:

let dn = 'cn=root,dc=example,dc=com,o=example';
let opts = {
  filter: '(cn=Don Doddson)',
  scope: 'sub'
}

client.search(dn, opts, (error, result) => { ...

没有什么“破坏”,但我得到的 SearchEntry messageID 为 2,而不是我想要的详细信息。

谢谢!

最佳答案

ldapEntities 定义中的 root dn 看起来像是打印错误

dn: 'cn=root,dc=example,dc=com,o=example',

关于ldapjs 创建模拟用户并执行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38978450/

相关文章:

javascript - Chai 期待 : an array to contain an object with at least these properties and values

reactjs - ReactJS 中的 LDAP 协议(protocol)和连接

java - 如何匿名访问 Windows Active Directory?

python - 如何在 ldap3 中读取给定 DN 的属性(如果没有过滤器,如何使用 ldap3 进行搜索)

node.js - 如何让 Istanbul 尔为我的所有源代码生成覆盖率?

javascript - Ldapjs 搜索不起作用

javascript - 如何通过ldapjs修改memberOf字段

ldap - dartlang 和 dartdap 库以及与事件目录的连接

spring - java.net.ConnectException : Connection timed out when connecting to ldap

javascript - 如何使用 mocha 和 rewire 模拟 Node.js 单元测试中的 Q 方法?