首页 文章

调用ValidateCredentials结果为False(具有已知的正确用户名/密码),事件4625显示在域服务器上

提问于
浏览
0

我正在对域上下文中的PrincipalContext.ValidateCredentials进行一个非常简单的调用,该调用因未知原因而导致假阴性 .

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "DOMAINNAME"))
            {
                bool isValid = pc.ValidateCredentials("username", "password");
                Console.WriteLine(isValid);
            }

当我在AD服务器上查看安全审核时,它显示事件ID为4625的审核失败事件,声称用户没有登录计算机的权限 . 我可以使用这些凭据登录加入此域的终端服务器 . 在此之前,我正在运行该应用程序的帐户成功审核,并且我能够成功验证其他用户的凭据 . 但是,我无法在成功验证的帐户和不成功验证的帐户之间找到任何差异,它们是所有相同域安全组的一部分 .

帐户登录失败 . 主题:安全ID:NULL SID帐户名称: - 帐户域: - 登录ID:0x0登录类型:3登录失败的帐户:安全ID:NULL SID帐户名称:[已删除]帐户域:失败信息:失败原因:用户不允许在此计算机上登录 . 状态:0xC000006E子状态:0xC0000070进程信息:呼叫者进程ID:0x0呼叫者进程名称: - 网络信息:工作站名称:[已删除]源网络地址:[已删除]源端口:62667详细认证信息:登录进程:NtLmSsp身份验证包:NTLM转换服务: - 程序包名称(仅限NTLM): - 密钥长度:0登录请求失败时生成此事件 . 它是在尝试访问的计算机上生成的 . “主题”字段指示本地系统上请求登录的帐户 . 这通常是服务(如服务器服务)或本地进程(如Winlogon.exe或Services.exe) . “登录类型”字段指示所请求的登录类型 . 最常见的类型是2(交互式)和3(网络) . “进程信息”字段指示系统上的哪个帐户和进程请求登录 . “网络信息”字段指示远程登录请求的来源 . 工作站名称并非始终可用,在某些情况下可能会留空 . 身份验证信息字段提供有关此特定登录请求的详细信息 . - 过渡服务指示哪些中间服务参与了此登录请求 . - 包名称表示在NTLM协议中使用了哪个子协议 . - 密钥长度表示生成的会话密钥的长度 . 如果没有请求会话密钥,则该值为0 .

我似乎在这里失去了理智,任何可以提供的帮助都将非常感激 . 我会考虑使用PrincipalContext的替代方法,如果此时存在一个 .

1 回答

  • 1

    正如您在this question's comment section中确认的那样,用户帐户必须登录到一组特定的计算机,这些计算机不包括DC服务器,这就是您的ValidateCredentials无法正常工作的原因 .

    @Am_I_Helpful是的,你是完全正确的,这就是问题所在 . 如果我更改用户登录到所有服务器的值,它将正常工作并返回true . 我想我对ValidateCredentials在域上下文中如何工作的理解是不正确的,我假设如果它是一个有效的,未锁定的帐户,它将返回true . 他们实际上需要登录到服务器列表中的域服务器?

    是的,如果您要检查凭据(身份验证),那么您需要在用户的登录工作站系统列表中包含域的域控制器!

相关问题