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

相关推荐
代码方舟1 小时前
Java后端实战:对接天远车辆过户查询API打造自动化车况评估系统
java·开发语言·自动化
手动阀行1 小时前
守护发布的最后一道防线:将自动化红队测试深度嵌入 CI/CD 流水线,筑牢 MCP 应用持续交付的安全底座
安全·ci/cd·自动化
梦想的旅途21 小时前
基于 RPA 模拟驱动的企业微信外部群自动化架构解析
机器人·自动化·rpa
Jul1en_1 小时前
【性能测试工具】JMeter下载安装、编辑环境变量和中文配置
测试工具·jmeter
rockmelodies1 小时前
Cybersecurity AI (CAI) AI 时代的网络安全自动化框架
人工智能·web安全·自动化
源力祁老师2 小时前
Odoo 19 企业版(enterprise)模块功能清单
自动化
电化学仪器白超2 小时前
PPTSYNC软件配置①
python·单片机·嵌入式硬件·自动化
码刘的极客手记2 小时前
vSphere 4.1 三大实用实战:vCenter 告警自动化、SIOC 无 License 启用及 Dropbox 存储运行 VM
运维·服务器·网络·自动化·虚拟机
整列机厂家-唯思特2 小时前
金属弹簧扣(钥匙扣)自动化精密摆盘的技术实践
科技·自动化·制造
天空属于哈夫克32 小时前
企微API+RPA:自动化终局之战
自动化·企业微信·rpa