auth

认证请求相关参数

名称
类型
是否必选
描述

accessKeyId

String

必选

用户的访问密钥ID 获取方式

accessTimestamp

String

必选

13位当前Unix时间戳,值为请求发出前15分钟内的时间戳。

accessNonce

String

必选

签名唯一随机数,用于防止网络重放攻击,建议每次请求使用不同随机数

accessVersion

String

必选

认证算法版本,当前只支持传V2

accessSign

String

必选

通过用户的AccessKey Secret计算出的签名

签名参数生成规则

1

步骤1:组织认证参数

  • accessKeyId

  • accessTimestamp

  • accessNonce

  • accessVersion

2

步骤2:按key升序排列

key(转换为小写) 按字符代码顺序升序排列。

示例排序结果:

[('accesskeyid', '64ca6a118372e71928b5e87d'), 
 ('accessnonce', 'c5dcafda-b7ed-488d-afcb-7d2a2e276187'), 
 ('accesstimestamp', '1745850607140'), 
 ('accessversion', 'V2'),
 ]
3

步骤3:拼接key=value

将排序后的 key=value 通过 & 符号连接,生成待签名字符串。

示例待签名字符串:

accesskeyid=64ca6a118372e71928b5e87d
&accessnonce=c5dcafda-b7ed-488d-afcb-7d2a2e276187
&accesstimestamp=1745850607140
&accessversion=V2
4

步骤4:计算HmacMD5签名

使用 AccessKey Secret 获取方式 对拼接后的字符串进行 HmacMD5签名,结果用16进制表示,得到 accessSign

示例签名结果:

081c0c05f1e0e8bcb547171d5ea597e9
5

步骤5:完整认证相关参数

示例最终的认证相关参数列表:

[('accessVersion', 'V2'), 
 ('accessTimestamp', '1745850607140'), 
 ('accessNonce', 'c5dcafda-b7ed-488d-afcb-7d2a2e276187'), 
 ('accessKeyId', '64ca6a118372e71928b5e87d'), 
 ('accessSign', '081c0c05f1e0e8bcb547171d5ea597e9'),
]

PostMan签名生成脚本(Pre-request Script)

// 1. 参数准备阶段
const accessKeyId = "你的密钥Access Key";
const accessKeySecret = "你的密钥AccessKey Secret";
const accessVersion = "V2";

// 2. 生成动态参数
const accessTimestamp = Date.now().toString();
const accessNonce = Array.from(crypto.getRandomValues(new Uint8Array(16))).map(b => b.toString(16).padStart(2, '0')).join('');

// 3. 参数排序与拼接
const params = {
    accessKeyId: accessKeyId,
    accessTimestamp: accessTimestamp,
    accessNonce: accessNonce,
    accessVersion: accessVersion
};
const sortedEntries = Object.entries(params).sort(([k1], [k2]) => k1.localeCompare(k2));
const queryString = sortedEntries.map(([k, v]) => `${k.toLowerCase()}=${v}`).join('&');

// 4. HMAC-MD5签名计算
const CryptoJS = require('crypto-js');
const hexSignature = CryptoJS.HmacMD5(queryString, accessKeySecret).toString();

// 5. 将签名相关值放入环境变量,如果postman版本是v5.x及以下使用postman.setEnvironmentVariable替换pm.environment.set
pm.environment.set("accessSign", hexSignature);
pm.environment.set("accessTimestamp", accessTimestamp);
pm.environment.set("accessNonce", accessNonce);
pm.environment.set("accessKeyId", accessKeyId);
pm.environment.set("accessVersion", accessVersion);

Python示例

Java示例

C++示例