ldapjs连接到LDAP(LDAP.forumsys.com)失败

ldapjs连接到LDAP(LDAP.forumsys.com)失败,ldap,openldap,ldapjs,Ldap,Openldap,Ldapjs,这是一个在线LDPA测试服务器 所以我做了一些简单的脚本来测试它,但我总是得到不想要的响应 这是我的密码: const ldap = require('ldapjs'); const assert = require('assert'); // LDAP Connection Settings const server = "ldap.forumsys.com"; const uid = "tesla" const password = "password"; // User password

这是一个在线LDPA测试服务器

所以我做了一些简单的脚本来测试它,但我总是得到不想要的响应

这是我的密码:

const ldap = require('ldapjs');
const assert = require('assert');

// LDAP Connection Settings
const server = "ldap.forumsys.com";
const uid = "tesla"
const password = "password"; // User password

// Create client and bind to AD
const client = ldap.createClient({
    url: `ldap://${server}`
});

// Search AD for user
const searchOptions = {
  filter: '(uid=${uid})'
};

// client.bind(`uid=tesla,dc=example,dc=com`,password,err => {
//     assert.ifError(err);
// });

client.search(`cn=read-only-admin,dc=example,dc=com`,searchOptions,(err,res) => {
    assert.ifError(err);

    res.on('searchEntry', entry => {
        console.log(entry.object.name);
    });
    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(result);
    });
});


// Wrap up
client.unbind( err => {
    assert.ifError(err);
});
我通过运行app.js来恢复这一点

SearchResponse {
  messageID: 1,
  protocolOp: 101,
  controls: [],
  log: 
   Logger {
     domain: null,
     _events: {},
     _eventsCount: 0,
     _maxListeners: undefined,
     _isSimpleChild: true,
     _level: 30,
     streams: [ [Object] ],
     serializers: { req: [Function], res: [Function], err: [Function] },
     src: false,
     fields: 
      { name: 'ldapjs',
        component: 'client',
        hostname: 'will-ThinkPad-T440p',
        pid: 17485,
        clazz: 'Client' } },
  status: 0,
  matchedDN: '',
  errorMessage: '',
  referrals: [],
  connection: 
   Socket {
     connecting: false,
     _hadError: false,
     _handle: 
      TCP {
        reading: true,
        owner: [Circular],
        onread: [Function: onread],
        onconnection: null,
        writeQueueSize: 0 },
     _parent: null,
     _host: 'ldap.forumsys.com',
     _readableState: 
      ReadableState {
        objectMode: false,
        highWaterMark: 16384,
        buffer: [Object],
        length: 0,
        pipes: null,
        pipesCount: 0,
        flowing: true,
        ended: false,
        endEmitted: false,
        reading: false,
        sync: false,
        needReadable: true,
        emittedReadable: false,
        readableListening: false,
        resumeScheduled: false,
        destroyed: false,
        defaultEncoding: 'utf8',
        awaitDrain: 0,
        readingMore: false,
        decoder: null,
        encoding: null },
     readable: true,
     domain: null,
     _events: 
      { finish: [Function: onSocketFinish],
        _socketEnd: [Function: onSocketEnd],
        data: [Function: onData],
        close: [Object],
        end: [Function: onEnd],
        error: [Function: onSocketError],
        timeout: [Function: onTimeout] },
     _eventsCount: 7,
     _maxListeners: undefined,
     _writableState: 
      WritableState {
        objectMode: false,
        highWaterMark: 16384,
        finalCalled: false,
        needDrain: false,
        ending: false,
        ended: false,
        finished: false,
        destroyed: false,
        decodeStrings: false,
        defaultEncoding: 'utf8',
        length: 0,
        writing: false,
        corked: 0,
        sync: false,
        bufferProcessing: false,
        onwrite: [Function: bound onwrite],
        writecb: null,
        writelen: 0,
        bufferedRequest: null,
        lastBufferedRequest: null,
        pendingcb: 0,
        prefinished: false,
        errorEmitted: false,
        bufferedRequestCount: 0,
        corkedRequestsFree: [Object] },
     writable: true,
     allowHalfOpen: false,
     _bytesDispatched: 79,
     _sockname: null,
     _pendingData: null,
     _pendingEncoding: '',
     server: null,
     _server: null,
     [Symbol(asyncId)]: 8,
     [Symbol(bytesRead)]: 0 },
  attributes: [],
  notAttributes: [],
  sentEntries: 0 }

不包含有关“特斯拉”的任何信息的……可能是本节:

// Search AD for user
const searchOptions = {
  filter: '(uid=${uid})'
};
需要像上面的url设置那样的倒勾吗?如果这是一个动态值,则应添加这些值以将其转换为字符串文字,如:

// Search AD for user
const searchOptions = {
  filter: `(uid=${uid})`
};
以上部分不正确。 应该是

const searchOptions = {
  filter: `(uid=${uid})`
};
我认为古斯塔夫已经给出了正确的答案。但除此之外,原因是当使用
时,变量替换并不像您预期的那样发生。要像这样构建字符串,需要使用`

无论如何,因为您已经编写了LDAP测试服务器,所以已经有编写的测试服务器可以实现这一点,例如,您可以使用


https://hub.docker.com/r/upekshejay/simple-ldap-test-server

您能否详细说明该响应是如何不需要的/失败的?怎么了?嘿,哈弗,是的。。我已经更新了帖子,添加了完整的回复,其中没有任何关于“特斯拉”的信息,谢谢。
const searchOptions = {
  filter: `(uid=${uid})`
};