免费注册
帮助文档(华北一、二)

  • 1. 将请求参数按照名进行升序排列

     

    {

        "Action"     :  "CreateUHostInstance",

        "ChargeType" :  "Month",

        "CPU"        :  2,

        "DiskSpace"  :  10,

        "ImageId"    :  "f43736e1-65a5-4bea-ad2e-8a46e18883c2",

        "LoginMode"  :  "Password",

        "Memory"     :  2048,

        "Name"       :  "Host01",

        "Password"   :  "VUNsb3VkLmNu",

        "PublicKey"  :  "inspurcloudsomeone@example.com1296235120854146120",

        "Quantity"   :  1,

        "Region"     :  "cn-inspur2",

        "Zone"       :  "cn-inspur2-01"

    }

    2. 构造被签名参数串

    被签名串的构造规则为: 被签名串 = 所有请求参数拼接(无需HTTP转义)。并在本签名串的结尾拼接API密钥的私钥(PrivateKey)。

    ctionCreateUHostInstanceCPU2ChargeTypeMonthDiskSpace10ImageIdf43736e1-65a5-4bea-ad2e-8a46e18883c2LoginModePasswordMemory2048NameHost01PasswordVUNsb3VkLmNuPublicKeyucloudsomeone@example.com12962351208541
    46120Quantity1Regioncn-inspur2Zonecn-inspur2-0446f09bb9fab4f12dfc160dae12273d5332b5debe

    3. 计算签名

    生成被签名串的 SHA1 签名,即是请求参数”Signature”的值。

    按照上述算法,本例中,计算出的Signature为 4f9ef5df2abab2c6fccd1e9515cb7e2df8c6bb65

    Python 生成签名代码:

     

    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

        # 生成的Signature值

    PHP 生成签名代码:

     

    function _verfy_ac($private_key, $params) {

       ksort($params);

       # 参数串排序

       $params_data = "";

       foreach($params as $key => $value) {

    ​       $params_data .= $key;

    ​       $params_data .= $value;

       }

       $params_data .= $private_key;

       return sha1($params_data);

       # 生成的Signature值

    }

    4. 使用签名组合HTTP请求

    4.1 Json方式

     

    curl -X POST \

      https://api.cloud.inspur.com\

      -H 'Content-Type: application/json' \

      -d '{

    ​    "Action"     :  "CreateUHostInstance",

    ​    "ChargeType" :  "Month",

    ​    "CPU"        :  2,

    ​    "DiskSpace"  :  10,

    ​    "ImageId"    :  "f43736e1-65a5-4bea-ad2e-8a46e18883c2",

    ​    "LoginMode"  :  "Password",

    ​    "Memory"     :  2048,

    ​    "Name"       :  "Host01",

    ​    "Password"   :  "VUNsb3VkLmNu",

    ​    "PublicKey"  :  "inspurcloudsomeone@example.com1296235120854146120",

    ​    "Quantity"   :  1,

    ​    "Region"     :  "cn-binspur2",

    ​    "Zone"       :  "cn-inspur2-01",

        "Signature"  :  "4f9ef5df2abab2c6fccd1e9515cb7e2df8c6bb65"

    }'

    4.2 拼接参数方式

    对排序后的请求参数进行URL编码,URL 编码的规则如下:

    ● 字符 A~Z、a~z、0~9不编码;

    ● 字符“-”、“_”、“.”、“~”不编码;

    ● 其它字符编码成 %XY 的格式,其中 XY 是字符对应 ASCII 码的 16 进制表示。比如:英文的双引号(”)对应的编码为 %22;

    ● 对于扩展的 UTF-8 字符,编码成 %XY%ZA… 的格式;

    ● 英文空格( )要编码成 %20,而不是加号(+)。

    ● "PublicKey" 无需编码

    构造HTTP请求,参数名和参数值之间用 "=" 连接,参数和参数之间用"&"号连接,构造的URL请求为:

     

    http(s)://api.cloud.inspur.com/?Action=CreateUHostInstance

    &CPU=2

    &ChargeType=Month

    &DiskSpace=10

    &ImageId=f43736e1-65a5-4bea-ad2e-8a46e18883c2

    &LoginMode=Password

    &Memory=2048

    &Name=Host01

    &Password=VUNsb3VkLmNu

    &PublicKey=inspurcloudsomeone%40example.com1296235120854146120

    &Quantity=1

    &Region=cn-inspur2

    &Zone=cn-inspur2-01

    将签名参数附在原有请求串的最后面。最终的HTTP请求串为(为了查看方便,我们人为地将参数之间用回车分隔开),完整的请求URL如下:(为了方便,我们人为地将参数之间用回车分隔开)。

     

    http(s)://api.cloud.inspur.com/?Action=CreateUHostInstance

    &CPU=2

    &ChargeType=Month

    &DiskSpace=10

    &ImageId=f43736e1-65a5-4bea-ad2e-8a46e18883c2

    &LoginMode=Password

    &Memory=2048

    &Name=Host01

    &Password=VUNsb3VkLmNu

    &PublicKey=inspurcloudsomeone%40example.com1296235120854146120

    &Quantity=1

    &Region=cn-inspur2

    &Zone=cn-inspur2-02

    &Signature=4f9ef5df2abab2c6fccd1e9515cb7e2df8c6bb65

文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家