Skip to main content

调用方法

签名方法

最近更新时间: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 签名

请求服务时,nonceaccess_keysignature 设置在 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

签名算法

  1. 参与签名的字段不包括 signature
  2. 将 JSON 格式的请求参数根据 key 按照 ASCII 码正序排列,生成签名 message。空值不参与签名计算。例如:pageIdx=1
  3. 在 message 后面拼接上 nonce 和 access_key,例如:pageIdx=1123456FkxZwvrgm5tZ2iIW2cv98smcriekvt7uH4PaFieZ
  4. 使用 secret_key 对步骤 3 生成的 message 进行 HMAC-SHA256 加密,然后转换成 hex 生成签名 signature,例如:7f2ef8b5f35efc22ebadc59bf4db8bf84995b8e56b6df8d8b030b6e744329bf0
  5. 最后请求参数加上 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