软件测试:如何在Postman中配置和自动化OAuth 2.0与JWT认证?

在Postman中熟练配置和自动化OAuth 2.0和JWT认证流程,能极大提升我们测试和开发API的效率。下面将为你详解这些认证机制,并提供在Postman中的实战配置方法。

OAuth 2.0和JWT主要概念

理解它们的关系是第一步:

OAuth 2.0是一个授权框架,专注于解决第三方应用在用户授权后安全访问服务器资源的问题,它本身不直接定义令牌的具体格式。你经常听到的授权码模式就是其中一种流程。

JWT则是一种令牌格式,它是一种紧凑的、自包含的,用于在双方之间安全传递信息的标准。OAuth 2.0框架中使用的访问令牌,就可以采用JWT格式。

简单来说,OAuth 2.0定义了如何安全地拿到"通行证",而JWT则是"通行证"本身可以采取的一种形式,上面记载了持有者的身份、权限等信息。

在Postman中配置OAuth 2.0

在Postman中正确配置是成功调用的主要,下图清晰地展示了配置OAuth 2.0授权的主要参数和自动化流程:

上图展示了从配置到获取令牌的主要路径。要实现这个流程,你需要在Postman的请求Authorization选项卡下,选择OAuth 2.0,然后配置主要参数:

Grant Type:根据场景选择,例如 Authorization Code(需要用户交互)或 Client Credentials(机器对机器)。

Callback URL:通常设置为 https://oauth.pstmn.io/v1/browser-callback 或 https://oauth.pstmn.io/v1/callback,用于接收授权码。

Auth URL:身份认证服务器的授权端点。

Access Token URL:获取访问令牌的端点。

Client ID&Client Secret:从API提供商处获取,标识你的应用。

Scope:定义你请求的权限范围,例如 FileStorageContainer.Selected offline_access。

配置完毕后,点击Get New Access Token,Postman会引导你完成登录和授权,最后获取并存储访问令牌。

主要技巧:

在集合级别配置授权,并勾选 "Always inherit authentication from parent",可以让集合下的所有请求自动继承该设置,无需逐个配置。

为范围(Scope)添加 offline_access 可以保证返回刷新令牌(Refresh Token),这样Postman在访问令牌过期时能自动刷新它,实现"一次配置,长期有效"。

处理JWT认证

对于使用JWT保护的接口,有两种主要方式在Postman中设置:

手动设置请求头

在请求的 Headers 选项卡中,添加一个键为 Authorization 的头部,值设置为 Bearer <你的JWT令牌>。这是最直接的方式。

自动化设置和生成JWT

如果JWT需要动态生成,或者你想完全自动化这个过程,预请求脚本(Pre-request Script) 是你手上的利器。

从环境变量读取并设置:如果JWT已存在于环境变量中,可以用脚本自动将其设置到请求头。

javascript 复制代码
// 从环境变量获取JWT

var jwtToken = pm.environment.get("jwt_token");

// 将JWT添加到请求头

pm.request.headers.add({key: 'Authorization', value: 'Bearer ' + jwtToken});

动态生成JWT:如果需要在请求前实时生成JWT,可以在预请求脚本中编写代码。这通常需要引入加密库(如 crypto-js),根据JWT的结构(Header, Payload, Signature)进行Base64Url编码和签名。

javascript 复制代码
// 示例:动态生成JWT并设置到环境变量

const header = {...};

const payload = {...};

// ... 这里进行编码和签名计算

const generatedJWT = encodedHeader + '.' + encodedPayload + '.' + signature;

pm.environment.set("jwt_token", generatedJWT);

实现认证流程自动化

为了让整个认证过程无缝衔接,我们可以利用Postman的脚本功能:

自动捕获令牌:在登录接口的Tests脚本中,解析响应体,提取返回的访问令牌或JWT,并将其保存为环境变量。

javascript 复制代码
// 解析登录响应,获取token并存储

var jsonData = pm.response.json();

if (jsonData.access_token) {

    pm.environment.set("access_token", jsonData.access_token);

}

自动应用令牌:在集合的Pre-request Script中,编写脚本自动为所有请求添加Authorization头。

javascript 复制代码
// 为集合下所有请求自动添加Authorization头

var token = pm.environment.get("access_token");

if (token) {

    pm.request.headers.add({key: 'Authorization', value: 'Bearer ' + token});

}

处理令牌刷新:利用OAuth 2.0配置中的刷新令牌机制,或通过在预请求脚本中检查令牌过期时间并重新生成,可以实现令牌的自动刷新。

技巧指南

掌握以下要点:

环境变量:将令牌、客户端ID、密钥等存储在环境变量或全局变量中,便于管理、复用和保护敏感信息。

作用域:正确的作用域是获取令牌的主要,如果权限不足,API调用会失败。

常见问题:

401 Unauthorized:检查令牌是否过期、格式是否正确(Bearer后有空格)、作用域是否满足API要求。

403 Forbidden:令牌有效但权限不足,检查请求的作用域。

回调地址错误:保证在Postman中设置的回调URL和在API提供商处注册的完全一致。

文章来源:卓码软件测评

精彩推荐:点击蓝字即可
▲软件负载测试 ▲API自动化测试 ▲软件测试 ▲第三方软件测试 ▲软件性能测试 ▲软件测试机构

相关推荐
德思特16 分钟前
德思特混频器参数详解:5MHz–40GHz 宽频段与低噪声 LO 设计
测试工具·自动化·射频工程
wuyk55510 小时前
《WiFi 嵌入式物联网开发全套实战》| 第 33 章 Wireshark 无线抓包环境搭建、802.11 帧过滤规则
物联网·测试工具·wireshark
慧都小项10 小时前
从原理图到 PCB 制造数据:设计交付的 4 个核对关口
程序人生·自动化·pcb工艺·电子设计
qq_2842740512 小时前
机械原理笔记:平面机构自由度计算(复合铰链、局部自由度、虚约束)与四杆机构入门(含考点)
笔记·学习·平面·自动化·制造
qq_2842740513 小时前
数控铣床与加工中心笔记:铣刀与刀柄系统、G54试切对刀、镜像加工指令、孔加工工艺(钻扩铰镗)与固定循环G73/G83/G81/G76/G87/G84
笔记·学习·自动化·制造
科技研学社16 小时前
精度决胜品质:羽绒服缝制工艺标准与自动化精度对标解析
运维·自动化
乐橙开放平台16 小时前
智慧连锁客流检测和离岗检测怎么对接
大数据·人工智能·笔记·物联网·自动化·音视频·智能家居
黑箭科技16 小时前
你的AI Agent在生产环境“裸奔“了多久?用500行Python代码搭建完整的驾驭工程体系
自动化·技术
天远Date Lab19 小时前
零信任架构实战:基于天远学籍核验三要素构建自动化竞赛资格审查网关
运维·人工智能·架构·自动化
波力海苔夹心脆67519 小时前
C# 视觉检测实战:PLC 按钮触发 VisionPro 检测,OK 亮灯 / NG 灭灯(西门子 PLC,含界面显示与图片存档)
开发语言·经验分享·c#·自动化·视觉检测·.net