百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

拿什么守护你,我的接口(接口登陆认证详解)

itomcoil 2025-09-01 04:12 7 浏览

简介

Http协议是无状态的,同一个客户多次访问服务器,服务器无法识别同一个客户的关联请求,也无法保存客户的状态。要解决这个问题,服务器需要获取到客户的身份,客户需要在每次发起Http请求的时候携带相应的身份信息,服务端获取到这个身份信息以后再返回相应的资源。我们在使用Web系统时,提供用户名和密码的过程就是向客户端提供身份认证信息的过程,那么在做接口测试的时候如何模拟用户登录过程,在每一次的接口请求中携带客户的身份信息呢?

在解决这个问题以前我们首先要了解常用的Http认证授权技术:

基于表单的认证(Cookie & Session):基于表单的认证并不是在HTTP协议中定义的,而是服务器自己实现的认证方式,安全程度取决于实现程度。一般用Cookie来管理Session会话,是最常用的认证方式之一。它的安全程度取决于服务器的实现程度,客户端在Cookie中携带认证信息,服务器解析并返回结果。

基于JWT(Json Web Token)的认证:App和服务端常用的认证方式,用户ID和密码传输到服务器上验证,服务器验证通过以后生成加密的JWT Token返回给客户端,客户端再发起请求时携带返回的Token进行认证。

Http Basic认证:最早的Http认证方式,用户ID和密码以分号连接,经过Base64编码后存储到Authorization字段,发送到服务端进行认证 ;用户ID/密码以明文形式暴露在网络上,安全性较差。

Http Digest认证:在HttpBasic的基础上,进行了一些安全性的改造,用户ID, 密码 , 服务器/客户端随机数,域,请求信息,经过MD5加密后存储到Authorization字段,发送到服务端进行认证;密码经过MD5加密,安全性比Basic略高。

其他认证方式(Oauth认证,单点登陆,HMAC认证):通过特定的加密字段和加密流程,对客户端和服务端的信息进行加密生成认证字段,放在Authorization或者是消息体里来实现客户信息的认证

下面针对常见的Http认证授权机制,使用Jmeter实现接口的登陆和认证。

基于表单的认证

基于表单的认证方式采用Cookie和Session来维持会话状态,针对这种认证方式,Jmeter提供了Cookie授权管理器来实现Cookie的自动回填和携带功能,Jmeter的Cookie管理器实现了浏览器Cookie管理的功能,可以接受服务端返回的Cookie值。

我们可以先模拟用户手工打开浏览器,在浏览器中输入用户名和密码,登录成功以后通过Chrome的抓包工具来获取到浏览器返回的Cookie值:

把相应的Cookie值填入到Jmeter提供的Cookie管理器中即可,Cookie管理器会对相应测试计划下的所有Http请求起作用,注意此时需要和开发同学沟通Cookie的实现机制以及相应的Session字段。

JWT认证

此种方式是通过Token来携带认证授权信息,当用户输入正确的用户名和密码以后,服务器会返回一个Token作为认证信息,用户需要在后续的请求里面携带这个认证信息。因此我们可以通过如下步骤来实现JWT的认证:

调用登陆接口,在登陆接口中输入用户名密码,获取服务器的响应报文

通过Json提取器或者是正则表达式提取器,提取服务端返回的Ticket字段

通过信息头管理器在后续的请求头中携带此Ticket

Http Basic认证

HttpBasic认证是Http自带的认证方式,这种认证方式通常表现为浏览器弹出Alert窗口提示输入用户名/密码

针对这种认证,我们可以基于Beanshell插件,通过在客户端实现协议的加密流程来模拟浏览器的操作。下图所示的代码实现了用户名,密码以:分割并进行Base64编码的过程,通过这个过程实现认证字段的生成,并把它通过变量放置到授权管理器当中。

Http Digest认证

Http Digest也是Http协议默认支持的认证方式,它和Http Digest类似,但是编码和加密方式更为复杂。针对Http Digest 认证,Jmeter内置了认证授权管理器,在认证授权管理器中填写相应的URL,用户名,密码,域(可选字段,可以为空)选择Mechanism为Basic_Digest,Jmeter可以实现自动编码和加密,模拟浏览器和服务器的交互过程,完成登录认证。

其他认证方式

除了上述四种,还有很多其他的认证方式,包括现在很流行的单点登录。但无论哪一种认证方式,Http都是无状态的,绕过登录的核心都是在Http请求中携带认证信息。这个认证信息我们可以通过和开发同学沟通签名加密的流程和字段,在客户端通过编码方式实现;也可以通过抓包工具抓取到相应的认证字段,然后通过Jmeter组件把字段添加到发起的Http请求当中。

作  者:Testfan Kitty

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

相关推荐

Filter函数在WPS里的正确用法,官方教程里都没有说......

Filter函数是office365新增的筛选函数,WPS也紧跟添加了它。但在二个软件中的使用方法却完全不同。office365有单元格溢出功能,只需要输入一个Filter公式即可完成数据筛选。但在W...

跳过VLOOKUP天坑!FILTER函数10个招式让同事以为你开了外挂?

还在为VLOOKUP的"一对多"限制头疼?是否还在为INDEX+MATCH的嵌套抓狂?今天教你用Excel新晋顶流——FILTER函数,10个高能用法让你秒变数据操控大师!用法1:精准...

Filter函数的三种用法,比用VLOOKUP一对多查询,更加灵活方便

文章最后有彩蛋!好礼相送!Excel秘籍大全,正文开始FILTER函数可以基于定义的条件筛选一系列数据。在没有filter函数之前,如果实现一对多查询,常见的是构建辅助列,然后使用VLOOKUP+R...

Filter函数公式,快速实现订单核对,1分钟学会

举个例子,我们有一份公司所有的订单源数据表格,这里我们只用两列信息来模拟,实际可能有很多列数据,几百行数据然后我们有另外一个表,里面有部分已经处理过的订单数据,如下所示,这里举例是4个,实际可能有上百...

FILTER函数结合及经典用法2:一对多筛选

FILTER经典用法2:一对多筛选。FILTER函数的经典用法2:一对多的筛选。比如左边这个表格,需要根据部门筛选出每个部门的人员,应该怎样做?·把鼠标放在单元格内,在编辑栏输入等于FILTER。·第...

干掉VLOOKUP,FILTER函数9大用法全解析!

1.单条件基础筛选场景:筛选销量>5000的记录公式:=VSTACK(A1:D1,FILTER(A2:D9,D2:D9>5500))解析:A2:D9为需要筛选的数据区域,D2:D9&...

Excel新函数公式Filter,秒杀VLOOKUP,人人必学

以前VLOOKUP公式是必学的公式,自从新版本更新之后,VLOOKUP已经变得可有可无了,但是新出来的Filter函数公式,你必须学会,它非常的强大,工作中用到非常频繁1、Filter公式背景在学会这...

第一讲:filter的基本用法及拓展_filter详解

全能查找函数filter的基本用法及拓展初学者,务必观看。进阶者,可互相学习,欢迎在回复中补充新用法。首次撰写此函数相关内容,若有不足之处,请予以指教,请勿诋毁,多谢。提示:以下内容以WPS最新版本为...

测一测你是什么粒子?_测测你是什么质

大亚湾实验。|图片来源:RoyKaltschmidt,LawrenceBerkeleyNationalLaboratory/WikimediaCommons2020年12月12日,大亚湾...

SpringBoot如何处理配置文件的密文

在SpringBoot应用中,直接在配置文件(如application.yml或application.properties)中明文存储数据库密码、API密钥等敏感信息是严重的安全风险,...

大语言模型解释Python的 类装饰器

一、什么是类装饰器?在Python中,装饰器(Decorator)是一种高阶函数,它接受另一个对象(通常是函数或类),并返回一个经“增强”处理后的新对象。我们常见的是对函数进行装饰:@my_dec...

Thymeleaf_thymeleaf属于前端吗

一、Thymeleaf简介Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模版引擎Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和Freemarke...

Win9去哪了?Win10避讳Windows95、98

10月1日,微软在旧金山发布了新一代操作系统预览版。但不是名为Windows9,而是win10,有业内人士猜测,跳过9而取10为命名是为了预示十全十美。可是小编还觉得9还代表长长久久呢!恐怕这里又说...

仓颉编程练习-字符串操作_仓颉编译器

main.cj:importstd.convert.Parsablemain():Int64{//字符串比较lets1:String="abc"...

一课译词:断断续续_一课译词:断断续续的意思

PhotobyMikefromPexels“断断续续”,或“时断时续”,意思是时而中断,时而继续地接连下去(continuefromtimetotime)。与英文惯用语“fitsan...