【发布时间】:2017-09-08 19:22:18
【问题描述】:
我正在尝试在我的应用程序中替换 Microsoft 的 DirectorySearcher,主要是因为它在我们的用例中确实很慢(当我搜索单个用户帐户以使用 sAMAccountName 作为过滤器,每个用户大约需要 400 毫秒,在某些情况下,我必须为许多用户获取它)。
所以我尝试了 Novell LDAP,包括原始版本和 .NET Standard 版本。 原始性能很好,但 .NET Standard 更好。微软需要 400 毫秒的相同情况,这个需要 3 毫秒。到目前为止一切顺利。
为了快速达到这一点,我对我的域凭据进行了硬编码。现在尝试在我们的应用程序中替换 Microsoft 的实现,我意识到我们正在使用 NTLM 身份验证,我希望这个更改对我的用户是透明的(不必向他们询问他们的域凭据)。
查看协议细节、使用wireshark 的LDAP 调用和Novell 的源代码,我很快意识到这是他们没有实现的东西。所以,我有点回到原点......
我需要一个可以通过 NTLM (sasl gss-spnego) 进行身份验证(绑定)的快速 LDAP 库。
这样的事情存在吗?我搜索了 nuGet 并询问了谷歌,但没有找到太多。
谢谢!
【问题讨论】:
-
根据我的经验,DirectorySearcher 是最快的选择。你在用the overload that allows you to restrict which properties are loaded吗?我注意到这会产生重大影响。
-
是的,我只加载了我需要的属性。我的问题最终是我的客户和我的测试域控制器/活动目录之间的协商。有人建议我使用相同的凭据,来自我的真实域,在我的测试域上,以避免必须实际登录它和所有......这是一个错误,是 NTLM 身份验证速度减慢的原因。当正确登录到我们的生产域/活动目录时,我无法复制此问题。在这种情况下,简单身份验证和 NTLM 之间没有明显区别。
标签: c# .net active-directory ldap ntlm