UCloud计算UAPI签名

Ucloud提供了丰富的API调用指令,可以操作包括Uhost,UCDN和UDB等资源。
基于安全考虑,每个独立的API操作部分都需要带上对应的签名(signature)。

Step-by-step guide

  1. 将请求参数转化为数组,除了文档中带Required属性的参数,还必须加上公共参数(一般指PublicKey)
  2. 编辑算法脚本signature.py,带入private_key值和params数组。
  3. 算出signature值
  4. 将signature值带入URL中,使用Linux curl调用。
# gen-signature.py
# -*- coding: utf-8 -*-
import hashlib
import urlparse
import urllib


def _verfy_ac(private_key, params):
    items = params.items()
    items.sort()

    params_data = "";
    for key, value in items:
        params_data = params_data + str(key) + str(value)
    params_data = params_data + private_key

    sign = hashlib.sha1()
    sign.update(params_data)
    signature = sign.hexdigest()

    return signature


private_key = "afcaaa83f649dc64f05967f00076bc47d1fa9999"
# private_key以实际环境为准
params = {
    "Action": "RefreshUcdnDomainCache",
    "DomainId": "ucdn-uw3rtw",
    "PublicKey": "uclouduser@example.com14315000530001556269999",
    "Type": "dir",
    "UrlList.0": "http://test888.example.com/folder1/"
}

print _verfy_ac(private_key, params);
Request_URL
http://api.spark.ucloud.cn/?Action=RefreshUcdnDomainCache&DomainId=ucdn-uw3rtw&PublicKey=uclouduser@example.com14315000530001556269999&Signature=42a109a9b8d783c6ac8052653a959ffe6cb720b4&Type=dir&UrlList.0=http://test.example.com/folder1/

参考文档

  • 签名算法 https://docs.ucloud.cn/api/summary/signature
  • 公共参数 https://docs.ucloud.cn/api/summary/public
  • GitHub UCloud https://github.com/ucloud/