如何使用Jmeter对NTLM认证进行压测

发表于:2021-3-10 09:23

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赵俊杰    来源:51Testing软件测试网原创

  一、什么是NTLM协议
  NTLM协议是一种网络认证协议,该协议是微软针对LAN Manager Challenge/Reponse(简称LM)验证机制容易被破解的问题,提出的Windows NT挑战/响应验证机制(简称NTLM),NTLM协议用于Window相关应用的身份认证。
  MTLM分NTLM v1和NTLM v2两个版本,两个版本协议的区别在于挑战码和加密算法不同。NTLM v1的挑战码有8位,NTLM v2的挑战码有16位;NTLM v1的主要加密算法是DES,NTLM v2的主要加密算法是MD5。以最新的NTLM v2为例,其认证的基本流程如下。
  二、通过抓包看NTLM认证流程
  常规的身份认证请求通常为Post请求,NTLM的认证请求为get请求。本文以配置管理软件TFS登录为例说明NTLM的认证流程,TFS登录从打开登录页面到登录完成包含3个get请求,使用Fiddler抓包内容如下。
  1)打开登录页面时,客户端向服务端发送get请求,服务端返回的http状态码为401,并返回支持的WWW-Authenticate认证头给客户端。
  2)客户端受到服务器的响应后,得知其支持NTLM认证协议后,发送一个新的get请求,请求的头部增加了“Authorization: Negotiate”相关字段,字段中包含了用户身份信息经Base64编码后的字符串。这串文本信息会被传递到服务端安全认证的相关接口,生成挑战码,并返回到客户端,此时服务端返回的状态码仍为401。
  3)客户端使用其密码散列加密服务端返回的挑战码得到另一个散列值,并再次发起get请求到服务端,请求头中含有经Base64编码的散列值,服务端接受到请求后,将服务端生成的散列值与客户端发来的散列值进行对比,如值相等,则认证通过,返回200的状态码。
  三、NTLM认证压测实战
  本文以Jmeter测试配置管理软件TFS登录为例,说明如何对NTLM认证进行压测,NTLM认证在访问应用登录页面时,浏览器会自动弹出登录对话框,如图所示。
  Jmeter中没有专门支持NTLM协议的取样器,但可通过添加HTTP Header Manager或HTTP Authorization Manager的方式来实现NTLM认证,但由于添加Http Header Manager需要了解Authorization头的详细构造过程,并需借助Beanshell PreProcessor等组件生成Authorization头,实际操作比较复杂。因此,通常通过添加HTTP Authorization Manager来编写NTML协议认证脚本并进行压测。
  1.HTTP Authorization Manager
  HTTP Authorization Manager如下图所示。
  Base URL:需要使用认证页面的URL,可不填
  Username:应用登录的用户名,必填
  Password:用户登录用户的密码,必填
  Domainm:身份认证页面所在的域,必填
  Realm:Realm字符串,可不填
  Mechanism:Jmeter的http授权管理器提供的认证机制,Jmeter5.1中认证机制包括BASIC_DIGEST,BASIC,DIGEST,KERBEROS四种,必填。
  2.压力测试步骤
  1)添加HTTP请求
  实际测试中,无需添加两次get请求,只需要添加一次get请求即可完成认证。
  2)添加并设置HTTP Authorization Manager
  TFS登录的测试中,需注意用户名填写时不能带域名,域名需单独在Domain栏填写,Mechanism选DIGEST。此外,不同的应用需要根据服务端HTTP的授权认证机制选择不同的Mechanism值,脚本调试时需要进行实测,如Tomcat相关的应用通常选BASIC_DIGEST。
  3)运行并查看结果

      版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号