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}}(直接引用已设置的变量)
- Key:
验证方式
运行预请求脚本后,查看Postman控制台输出的Token格式是否与供应商示例一致(以Basic 开头,后跟长Base64字符串),再发送请求测试认证是否通过。
内容的提问来源于stack exchange,提问作者Steve Skill
相关产品推荐
相关产品推荐

