[英]how to properly authenticate Node.js app using activedirectory / ldapjs module?
[英]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.