我正在开发自定义凭据提供程序,需要在针对 Active Directory 或缓存凭据进行 MFA 操作之前预先检查域或本地用户凭据。我现在使用 LogonUser 方法来检查。它在我的所有情况下都运行良好,但我有一个小问题,如果有网络可用但 DC 不可用,LogonUser 方法需要很长时间(约 45 秒)。有谁知道我怎样才能通过这个?或者我应该改变我的验证方法?
我想我在Alexander的评论的帮助下想出了一个解决方案。我正在使用
LogonUser(userName, domain, password, (int)LogonTypes.Network, (int)LogonProviders.WinNT40, ref refToken)
使用 LogonTypes.Network 和 LogonProvider.WinNT40 比我以前尝试的要快。如果 DC 不可用,则需要 12 秒来验证用户身份。
这是我的旧代码
LogonUser(userName, domain, password, (int)LogonTypes.Interactive, (int)LogonProviders.Default, ref refToken)
如果 DC 不可用,则需要 45 秒来验证用户身份。