Apifox针对JWT令牌验证的测试有两种方法分别面向不同场景:一是使用内置的JWT授权生成功能,便捷处理标准令牌;二是通过前后置脚本,实现复杂、动态的令牌全生命周期管理。
用途:内置 JWT 授权功能快速生成静态或简单动态JWT。前后置脚本处理复杂逻辑:登录、自动刷新、过期重试等。
配置位置:内置 JWT 授权功能接口的 “授权” (Auth) 选项卡。前后置脚本接口或目录的 “前置/后置操作” 脚本。
令牌生成:内置 JWT 授权功能在Apifox内配置算法、密钥、载荷后直接生成。前后置脚本通过脚本调用 pm.sendRequest 请求登录接口或计算生成。
动态性:内置 JWT 授权功能载荷(Payload)支持变量,但逻辑固定。前后置脚本完全可编程,可集成业务逻辑、错误处理。
维护性:内置 JWT 授权功能简单直观,适用于固定令牌或简单场景。前后置脚本通过公共脚本,一次编写,多处复用,便于团队统一维护。
自动化测试:内置 JWT 授权功能支持,但无法处理令牌过期刷新。前后置脚本完美支持,是为了实现自动化测试和CI/CD集成。
方法一:使用内置JWT授权功能(适合标准或静态令牌)
这是处理标准JWT或进行快速验证的最直接方式,尤其适用于已知密钥和载荷格式的场景。
功能启用:在接口的 “授权” (Auth) 选项卡中,将类型设置为 “JWT”。
配置:
算法:选择后端使用的签名算法(如HS256、RS256)。
密钥:填入用于签名的密钥。对于RS256等非对称算法,需填入你的私钥。
载荷:定义JWT中携带的信息,通常是JSON对象,如 {"userId": 123, "role": "admin"}。此处支持使用变量(如{{userId}}),实现一定程度的动态化。
发送:配置完成后,点击发送,Apifox会自动生成Token,并默认将其添加到Authorization请求头中,格式为 Bearer <你的JWT令牌>。也可以在“高级设置”中,修改其添加位置为Query参数。
方法二:使用前后置脚本(适合动态、全生命周期管理)
当需要模拟真实客户端行为、处理令牌自动刷新或在自动化流程中管理令牌时,脚本方案是唯一选择。工作流程如下:
1. 认证和获取令牌:在公共脚本中,使用 pm.sendRequest 编写一个登录函数。它应能发送登录请求(含用户名/密码),并从响应JSON中提取出access_token字段。
2. 安全存储令牌:将获取到的令牌存入环境变量(如 pm.environment.set("jwt_token", tokenValue)),而不是硬编码在脚本里。保证了安全性和多环境(开发、测试、生产)适配。
3. 自动装配令牌:在需要验证的接口或目录的前置操作中,编写脚本从环境变量读取令牌,并设置为请求头:pm.request.headers.add({key: 'Authorization', value: 'Bearer ' + pm.environment.get('jwt_token')})。
4. 智能刷新和重试:在后置操作中,检查响应状态码是否为401。若是则自动调用上述登录函数刷新令牌,并使用pm.environment.set更新环境变量后,结合pm.sendRequest重试原请求。
5. 团队复用:将上述登录、装配、刷新逻辑全部封装在公共脚本中。然后,在项目的整个API目录上,通过“前置/后置操作”引用这些公共脚本。这样目录下所有接口都自动获得了JWT令牌管理能力,无需逐个配置。
建议
选择内置功能:只是快速测试一个已知的、长期有效的JWT令牌,或接口需要你手动构造一个特定载荷的JWT。