【问题标题】:JMeter NTLM/Windows Authentication Load TestingJMeter NTLM/Windows 身份验证负载测试
【发布时间】:2026-01-27 21:05:01
【问题描述】:

要做什么?

我们在 Sharepoint(企业)服务器上部署了一个应用程序,它使用 Windows 凭据登录应用程序。

目标是为这样的 n 个用户执行应用程序的负载/性能测试(尤其是登录功能)。

通常,当我在 Firefox/IE 中点击应用程序 URL 时,它会弹出一个窗口,要求提供凭据。我输入凭据,浏览应用程序,然后注销。我打算在 JMeter 中捕获这一点并为大量用户进行模拟。

我被困在哪里了?

现在我启动 JMeter 代理服务器,然后尝试与上述相同的步骤。但是当弹出窗口出现时,JMeter 根本不会记录它,也不会在登录后记录任何其他内容。

我尝试了什么?

如果我在 IE 中启用“自动检测 Intranet 网络”后尝试相同的步骤,那么它只会自动检测我的 Windows 凭据(无凭据弹出窗口),将我登录到应用程序(这也不会记录在 JMeter 中)并带我到主页。之后我点击的任何页面都会记录在 JMeter 中。

我还尝试使用以下参数使用HTTP Authorization Manager

它没有帮助。我对如何使用上述元素感到很困惑。甚至不确定它是否是解决我的问题的正确方法。

有什么帮助/建议吗?

P.S.我知道一个叫做 Badboy 的工具,但必须把它作为最后的资源。甚至不确定它是否记录了弹出窗口。 如果帖子很冗长,请见谅。


更新:

我也试过了——

Username: USER_ID and Domain: my_company_domain

但这不是真正的问题。问题是,当我尝试点击之前记录的页面(自动化)时,即使我没有使用 HTTP 授权管理器也会返回成功响应。我不确定我错过了什么。

【问题讨论】:

    标签: automated-tests windows-authentication jmeter load-testing ntlm


    【解决方案1】:

    好的。最后我得到了缺少的东西。

    首先,我必须将每个请求的实现更改为HttpClient3.1

    其次,看到JMeter documentation 具有误导性,真是令人沮丧。

    上面说配置文件httpclient.parameters,应该编辑如下:

    http.authentication.preemptive$Boolean=false
    

    但它没有用。将其更改为 true 就像一种魅力。

    希望这对其他人有所帮助。

    【讨论】:

    • 您的解决方案不适合我。你能说一下你用的是哪个版本的JMeter(我用的是2.7)?您使用了哪些元素:HTTP Authorization ManagerLogin Config Element
    • 对我不起作用。事实上,没有任何效果 :-( 为什么 JMeter 不能毫无问题地做到这一点?
    【解决方案2】:

    JMeter 在 HTTP 层工作,因此代理只会捕获通过该协议层发出的请求。在我看来,您已经找到了使用“在 IE 中自动检测 Intranet 网络”进行录制的正确方法,您可以使用此方法捕获大多数请求,并且您必须手动确定身份验证。您如何执行此操作取决于您的应用程序如何与您的服务器通信以验证用户身份。

    【讨论】:

    • 对。但是,我只是没有通过身份验证障碍。这就是我自动化测试的主要目标。我已经为问题添加了更新。看看能不能再多指点。谢谢。
    • 当然可以,但是您必须手动解决。除了弄清楚您的应用程序是如何进行身份验证的(您实际上并没有描述这一点,但我会猜测 NTLM)然后查看使 JMeter 与之配合使用的选项之外,没有其他解决方案。这就是开源软件的乐趣所在,有时你不得不亲自动手。
    • 谢谢奥利弗。它只是 NTLM。是的,我弄脏了手。 :)