软件测试:如何在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-callbackhttps://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自动化测试软件测试第三方软件测试软件性能测试软件测试机构

相关推荐
qq 13740186111 天前
YY/T 0681.15:无菌医疗器械yyt0681.15运输包装的安全守护指南
功能测试·可用性测试·安全性测试
幻云20101 天前
AI自动化编排:从入门到精通(基于Dify构建AI智能系统)
运维·人工智能·自动化
猿饵块1 天前
tcp--抓包--wireshark
网络·测试工具·wireshark
代码AI弗森1 天前
n8n 专题:从“自动化脚本”到“可视化工作流引擎”(自建、节点、Webhook、生产部署)
运维·自动化
极客先躯1 天前
老版本Postman请求脚本编写指南:从Async/Await到回调函数的完整迁移方案
测试工具·lua·postman
云捷配低代码1 天前
低代码与定制开发:复杂业务场景适配度分析
低代码·自动化·数字化·敏捷流程·数字化转型
盈创力和20071 天前
以太网温湿度传感器如何提升机房环境监控的自动化与可靠性?
运维·自动化·以太网温湿度传感器·多协议支持·网络型温湿度传感器·物联网温湿度变送器·双重供电温湿度传感器
北京耐用通信1 天前
告别通信干扰与距离限制:耐达讯自动化Profibus总线光纤中继器赋能伺服驱动器稳定连接
人工智能·科技·网络协议·自动化·信息与通信
旦莫1 天前
Python测试开发工具库:测试环境变量统一配置与加载工具
python·测试开发·自动化·ai测试