簡體   English   中英

改善由節點js活動目錄模塊進行的findUsers查詢的延遲

[英]Improve latency of findUsers query made by node js activedirectory module

從nodejs的活動目錄獲取用戶時,我遇到高延遲。

我正在使用npm'activedirectry'中的節點庫。 https://www.npmjs.com/package/activedirectory

用戶數量相對不大,大約有1000個用戶...

查詢時間需要2到4秒。

'activedirectory'庫的findUsers函數提供的默認查詢是(&(|(objectClass = user)(objectClass = person))(!(objectClass = computer))(!(objectClass = group)))

我在sAMAccountName字段上添加了一個額外的過濾器。 sAMAccountName賦= * somePartOfName *

無論如何,無論有沒有添加,查詢時間仍然很慢。

我沒有Active Directory服務器的完整配置,但是似乎同一網絡上的其他平台與Active Directory的工作速度更快,但它們與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秒鍾。

我已經在搜索bitbucket的開放源,但沒有找到任何源。

node.js ,也從未在同一程序中進行過編程。 但是,從這個問題來看,我覺得為findUsers()提供的默認查詢可能是罪魁禍首。

根據Microsoft Docs, (&(objectClass=user)(objectCategory=person)) LDAP過濾器足以確定用戶。

在函數findUsers(opts, callback)的官方文檔中,我可以看到opts有關可選參數的描述, 以擴展或覆蓋功能

因此,我認為您可以使用findUsers函數中的opts參數覆蓋LDAP過濾器查詢,以保留上述建議的LDAP過濾器,並將sAMAccountName條件放入搜索查詢中。 請探討如何覆蓋opts參數,因為我無法為您提供幫助。

我希望以這種方式進行搜索后,結果會相對更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM