签名方法
最近更新时间:2025-12-24 15:06:05
前置条件
- 在使用签名方法之前,您需要获取
access_key和secret_key。如果您还没有获取密钥,请参阅密钥管理指南来创建并保存您的密钥。 - 使用 access key 方式访问服务时,需要在请求 header 中设置
X-AUTH-TYPE值为AK。
签名参数
| 参数 | 类型 | 说明 |
|---|---|---|
| access_key | string | 接入应用标识 |
| secret_key | string | 加密密钥 |
| nonce | string | unix时间戳,服务端会校验与当前的时间误差30秒 |
| signature | string | 签名 |
请求服务时,nonce、access_key、signature 设置在 URI 的 querystring 中,同时需要在请求 header 中设置 X-AUTH-TYPE 值为 AK,例如:
/gpu/api/v1/service/cloudregion?pageIdx=1&access_key=xx&nonce=123456&signature=xx
请求头设置:
X-AUTH-TYPE: AK
签名算法
- 参与签名的字段不包括
signature。 - 将 JSON 格式的请求参数根据 key 按照 ASCII 码正序排列,生成签名 message。空值不参与签名计算。例如:
pageIdx=1 - 在 message 后面拼接上
nonce和access_key,例如:pageIdx=1123456FkxZwvrgm5tZ2iIW2cv98smcriekvt7uH4PaFieZ - 使用
secret_key对步骤 3 生成的 message 进行 HMAC-SHA256 加密,然后转换成 hex 生成签名 signature,例如:7f2ef8b5f35efc22ebadc59bf4db8bf84995b8e56b6df8d8b030b6e744329bf0 - 最后请求参数加上
signature完成签名,提交服务端校验。
示例
以下是一个完整的示例,展示创建实例订单的签名过程:
应用详情:
- appName:
api-test - access_key:
2DhWOSzx3ZZfDKR5HCwbEdes93PIDWxcwTZq60K8 - secret_key:
onHO1TC7xaakx9k2JdnGU0T2dWVWVxVMcexOVjLG
请求 Body:
{
"associate_id": "1720276164460810240",
"user_id": "1996482558459777024",
"sku": "1b06ec36070ba20bf1413544017a6e374218b6c7",
"image_id": "34611f92-75b6-462c-84a2-44ca9ef5243a",
"hostname": "bd-k8s-1KpDSbXMxZ-nat-gateway",
"generate_name": "bd-k8s-1KpDSbXMxZ-nat-gateway",
"description": "K8s NAT Gateway for cluster bd-k8s-1KpDSbXMxZ",
"__count__": 1,
"instance_type_family": "VIRTUAL_MACHINE",
"keypair": "0a52ba76-7f56-49a5-82f3-fd9d92f6adb2",
"prefer_region": "default",
"prefer_zone": "ba4d6422-b6f8-4e97-8ce6-e4fc94aaca13",
"zone_id": "ba4d6422-b6f8-4e97-8ce6-e4fc94aaca13",
"vpc_network_id": "6ab1b65d-642c-4db5-870c-e6cee6b84c8f",
"vpc_id": "f1c32034-4bcd-4c48-8eef-c9448e0beed4",
"network_id": "6ab1b65d-642c-4db5-870c-e6cee6b84c8f",
"bandwidth": 200,
"bandwidth_category": 2,
"bandwidth_charging_category": 2,
"bandwidth_promotion_id": "176",
"used_category": 3,
"secgroups": [
"12c10f42-44d3-4b77-8001-3b26ec15091a"
],
"system_disk_storage": {
"size": 100,
"promotion_id": "196860769046888857658816283812",
"disk_type": "sys"
},
"promotion_id": "180370914450761728011477873701",
"source": "online",
"sold_type": 1,
"renew": 3,
"rg_id": "rg-qMYZoxUiRDmDDwOm",
"tags": [
"K8S"
]
}
请求 Query 参数:
- nonce:
1766545160 - access_key:
2DhWOSzx3ZZfDKR5HCwbEdes93PIDWxcwTZq60K8 - signature:
2d398cb4ec3375e1e68f24b6dd8d9e95fcce818230c0794437e7edc7c266c549
签名 Payload:
将所有请求 body 参数按 key 的 ASCII 码正序排列,然后拼接 nonce、appName 和 access_key:
__count__=1&associate_id=1720276164460810240&bandwidth=200&bandwidth_category=2&bandwidth_charging_category=2&bandwidth_promotion_id=176&description=K8s NAT Gateway for cluster bd-k8s-1KpDSbXMxZ&generate_name=bd-k8s-1KpDSbXMxZ-nat-gateway&hostname=bd-k8s-1KpDSbXMxZ-nat-gateway&image_id=34611f92-75b6-462c-84a2-44ca9ef5243a&instance_type_family=VIRTUAL_MACHINE&keypair=0a52ba76-7f56-49a5-82f3-fd9d92f6adb2&network_id=6ab1b65d-642c-4db5-870c-e6cee6b84c8f&prefer_region=default&prefer_zone=ba4d6422-b6f8-4e97-8ce6-e4fc94aaca13&promotion_id=180370914450761728011477873701&renew=3&rg_id=rg-qMYZoxUiRDmDDwOm&secgroups=["12c10f42-44d3-4b77-8001-3b26ec15091a"]&sku=1b06ec36070ba20bf1413544017a6e374218b6c7&sold_type=1&source=online&system_disk_storage=disk_type=sys&promotion_id=196860769046888857658816283812&size=100&tags=["K8S"]&used_category=3&user_id=1996482558459777024&vpc_id=f1c32034-4bcd-4c48-8eef-c9448e0beed4&vpc_network_id=6ab1b65d-642c-4db5-870c-e6cee6b84c8f&zone_id=ba4d6422-b6f8-4e97-8ce6-e4fc94aaca131766545160api-test2DhWOSzx3ZZfDKR5HCwbEdes93PIDWxcwTZq60K8
签名结果:
使用 secret_key 对 payload 进行 HMAC-SHA256 加密并转换成 hex 生成签名:
2d398cb4ec3375e1e68f24b6dd8d9e95fcce818230c0794437e7edc7c266c549