Postman实现jwt发送请求

javascript 复制代码
// Pre-request script
// 使用 CryptoJS(Postman 通常内置这个)
const generateJWT = () => {
    const issuer = "example.com";
    const secret = "secret_key";
    console.log("Generating JWT with issuer:", issuer);
    
    // Header
    const header = {
        "alg": "HS256",
        "typ": "JWT"
    };
    
    // Payload
    const payload = {
        "iss": issuer,
        "exp": Math.floor(Date.now() / 1000) + 3600,
        "iat": Math.floor(Date.now() / 1000),
        "sub": "postman-test",
        "name": "test"
    };
    
    try {
        // 方法2A: 使用 CryptoJS(如果可用)
        const base64Header = btoa(JSON.stringify(header)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
        const base64Payload = btoa(JSON.stringify(payload)).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
        
        const data = base64Header + "." + base64Payload;
        
        // 简单的HMAC-SHA256实现
        const signature = CryptoJS.HmacSHA256(data, secret);
        const base64Signature = CryptoJS.enc.Base64.stringify(signature)
            .replace(/\+/g, '-')
            .replace(/\//g, '_')
            .replace(/=+$/, '');
        
        const token = data + "." + base64Signature;
        
        pm.environment.set("jwt_token", token);
        console.log("JWT生成成功:", token);
        return token;
        
    } catch (error) {
        console.log("CryptoJS方法失败:", error);
        
        // 方法2B: 使用纯JavaScript的简单实现(用于测试)
        const simpleToken = generateSimpleJWT(header, payload, secret);
        pm.environment.set("jwt_token", simpleToken);
        console.log("使用简单方法生成的JWT:", simpleToken);
        return simpleToken;
    }
};

// 简单的JWT生成函数(用于测试)
function generateSimpleJWT(header, payload, secret) {
    const base64Header = btoa(JSON.stringify(header))
        .replace(/\+/g, '-')
        .replace(/\//g, '_')
        .replace(/=+$/, '');
    
    const base64Payload = btoa(JSON.stringify(payload))
        .replace(/\+/g, '-')
        .replace(/\//g, '_')
        .replace(/=+$/, '');
    
    // 注意:这是一个简化的签名,仅用于测试
    const fakeSignature = "test_signature_only_for_debugging";
    
    return base64Header + "." + base64Payload + "." + fakeSignature;
}

// 生成JWT
generateJWT();

设置headers

key jwt

value {{jwt_token}}

相关推荐
可可南木10 小时前
3070文件格式--15--bootptab文件
功能测试·测试工具·pcb工艺
生而为虫16 小时前
Selenium打开网页时保持登陆状态
selenium·测试工具
daad77720 小时前
tcpdump_BPF
linux·测试工具·tcpdump
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 46--撰写 README项目说明文档文件
python·学习·测试工具·pytest
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 47--设置Selenium以无头模式运行代码
python·学习·selenium·测试工具·pytest
网络安全-杰克2 天前
Jmeter压力测试工具安装与使用
自动化测试·软件测试·测试工具·jmeter·职场和发展
Wpa.wk2 天前
接口自动化 - 接口鉴权处理常用方法
java·运维·测试工具·自动化·接口自动化
Wpa.wk2 天前
接口自动化 - 多环境统一文件配置 +多响应统一转换处理
运维·服务器·测试工具·自动化·接口自动化·统一配置
@zulnger2 天前
selenium 自动化测试工具实战项目(窗口切换)
selenium·测试工具·自动化
辣香牛肉面3 天前
Wireshark v4.6.2 开源免费网络嗅探抓包工具中文便携版
网络·测试工具·wireshark