Увеличьте время ожидания запроса findUsers, выполняемого модулем js activedirectory - PullRequest
0 голосов
/ 20 января 2019

Я испытываю большие задержки при извлечении пользователей из активного каталога в nodejs.

Я использую библиотеку узлов из npm 'activedirectry'.https://www.npmjs.com/package/activedirectory

Количество пользователей относительно невелико, около 1000 пользователей ...

Время запроса занимает от 2 до 4 секунд.

По умолчаниюзапрос, предоставляемый функцией findUsers библиотеки 'activedirectory', имеет вид (& (| (objectClass = user) (objectClass = person)) (! (objectClass = computer)) (! (objectClass = group))) .

Я добавил дополнительный фильтр в поле sAMAccountName.sAMAccountName = * somePartOfName *

В любом случае, с моим добавлением или без него время запроса все еще медленное.

У меня нет полной конфигурации активного сервера каталогов, но похоже,другие платформы в той же сети работают быстрее с активным каталогом, но они работают с другими платформами, в java и .NET.

В чем может быть причина такой высокой задержки?

Спасибо

// ad is configured only with user, password, base dn and url

function findUsers(partOfsAMAccountName) {
    const additionalQuery = `sAMAccountName=*${partOfsAMAccountName}*`;

    return new Promise(resolve => {
        ad.findUsers(additionalQuery, false, (error, users) => {
            if(error) {
                console.error('%j', error);
            }

            resolve(users || []);
        })
    }
}

Я пытаюсь создать механизм автозаполнения на основе имен пользователей активного каталога.

В той же сети у нас есть сервер bitbucket, подключенный к тому же серверу активных каталогов.Похоже, что из клиента bitbucket автозаполнение происходит намного быстрее.примерно через 1 секунду от клиентской стороны.

Я уже искал открытый источник битбакета, но не нашел.

1 Ответ

0 голосов
/ 21 января 2019

Я понятия не имею о node.js, и никогда не программировал так же.Но из вопроса я чувствую, что запрос по умолчанию, предоставленный для findUsers (), может быть виновником.

Согласно Microsoft Docs, LDAP-фильтр для (&(objectClass=user)(objectCategory=person)) достаточен для определенияпользователи.

В официальной документации для функции findUsers(opts, callback) я вижу описание параметров аргумента о Необязательные параметры для расширения или переопределение функциональность .

Итак, я думаю, что вы можете переопределить запрос фильтра LDAP, используя аргумент opts в функции findUsers, чтобы сохранить рекомендованный выше фильтр LDAP, и дополнительно поместить условие sAMAccountName в поисковый запрос.Пожалуйста, узнайте, как переопределить аргумент opts, поскольку я не могу вам с этим помочь.

Я надеюсь, что результат будет сравнительно быстрее после выполнения поиска таким образом.

...