验证本地用户脱离网络

Ser*_*rge 5 .net c# security authentication

我正在尝试根据提供的用户名和密码对本地用户进行身份验证。我遇到了这个线程:针对 Active Directory 验证用户名和密码?

这是我验证用户的方式:

PrincipalContext pc = new PrincipalContext(ContextType.Machine);
bool isValid = pc.ValidateCredentials(user, pass);
Run Code Online (Sandbox Code Playgroud)

只要我在网络上它就可以工作,但是如果我断开计算机的连接,它会给我:

找不到网络路径。

我要做的就是在本地机器上进行验证,该机器可能是网络的一部分,也可能不是网络的一部分。

编辑:UserPrincipal.FindByIdentity 似乎在没有 AD 的情况下仍然有效,是 pc.ValidateCredentials 给我带来了麻烦。

Sim*_*n S 2

您可能应该查看此链接:如何验证域凭据?

如果即使 AD 不在线也必须能够完成验证,那么使用 LogonUser Win32 API 函数似乎是唯一的选择。然而,并非没有严重的缺点(如线程中所示)。您需要为执行应用程序的帐户提供很多权限。