当前位置: 首页 > 测试知识 > 软件测试:如何在Postman中配置和自动化OAuth 2.0与JWT认证?
软件测试:如何在Postman中配置和自动化OAuth 2.0与JWT认证?
2025-11-19 作者cwb 浏览次数9

在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接口测试 测试工具
咨询软件测试