从nodejs的活动目录中获取用户时,我遇到了高延迟。
我正在使用npm'activedirectry'中的节点库。 https://www.npmjs.com/package/activedirectory
用户数量相对不大,大约有1000个用户...
查询时间需要2到4秒。
“活动目录”库的功能findUsers提供的默认查询为(&(|(objectClass = user)(objectClass = person))(!(objectClass = computer))(!(objectClass = group )))。
我在sAMAccountName字段上添加了一个附加过滤器。 sAMAccountName = * somePartOfName *
无论如何,添加或不添加查询的时间仍然很慢。
我没有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客户端看来,自动完成速度要快得多。距客户端大约1秒钟。
我已经搜索了bitbucket的开放源,但没有找到。
答案 0 :(得分:0)
我对node.js
一无所知,也从未使用相同的程序进行编程。但是,从这个问题来看,我觉得为findUsers()提供的默认查询可能是罪魁祸首。
根据Microsoft Docs,LDAP过滤器用于
(&(objectClass=user)(objectCategory=person))
足以确定用户。
在功能findUsers(opts, callback)
的官方文档中,我可以看到参数opts关于用于扩展或覆盖功能的可选参数的描述。
因此,我认为您可以使用findUsers函数中的opts
参数覆盖LDAP过滤器查询,以保留上述建议的LDAP过滤器,并将sAMAccountName条件放入搜索查询中。请探索如何覆盖opts参数,因为我无法帮助您。
我希望以这种方式进行搜索后,结果会相对更快。