You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postman预请求生成HMAC-SHA256认证Token遇阻,求修正及变量配置

修正Postman预请求脚本生成合规HMAC认证Token

问题分析

你当前的代码逻辑完全不符合供应商规范:

  • 错误使用普通SHA256而非HMAC-SHA256(需以ClientAPIKey为密钥,对ContactAPIKey进行哈希)
  • 错误拼接basic:${clientKey}::${contactKey}::${username}字符串,未按要求生成用户名:HMAC值后再做Base64编码
  • 最终输出缺少正确的Basic 前缀(注意空格)

修正后的Postman预请求脚本

直接使用Postman支持的Node.js crypto模块(与官方示例逻辑对齐),代码如下:

// 替换为你的实际密钥和用户名
const clientKey = '50e36348-xxxxxxxxxxxxxxxxxxxx';
const contactKey = '0c24bd95-xxxxxxxxxxxxxxxxxxx';
const username = 'fakevalue';

function genBasicToken(clientAPIKey, contactAPIKey, username) {
    // 步骤1:以ClientAPIKey为密钥,对ContactAPIKey生成HMAC-SHA256并转Base64
    const hmac = require('crypto').createHmac('sha256', clientAPIKey)
        .update(contactAPIKey)
        .digest('base64');
    // 步骤2:拼接"用户名:HMAC值"后转Base64
    const credentials = Buffer.from(`${username}:${hmac}`).toString('base64');
    // 步骤3:添加Basic前缀
    return `Basic ${credentials}`;
}

// 生成Token并设置为Postman环境变量(需提前创建对应环境)
const authToken = genBasicToken(clientKey, contactKey, username);
pm.environment.set('basicAuthToken', authToken);
console.log('生成的认证Token:', authToken);

变量配置与请求头设置

  • 变量存储:脚本中pm.environment.set('basicAuthToken', authToken)会将Token存入当前选中的环境变量,若需全局使用,替换为pm.globals.set('basicAuthToken', authToken)
  • 请求头配置:在Postman请求的Headers面板添加一条:
    • Key: Authorization
    • Value: {{basicAuthToken}}(直接引用已设置的变量)

验证方式

运行预请求脚本后,查看Postman控制台输出的Token格式是否与供应商示例一致(以Basic 开头,后跟长Base64字符串),再发送请求测试认证是否通过。

内容的提问来源于stack exchange,提问作者Steve Skill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 22:27:44