AppCenter 平台会在每次请求中附上 Signature,SPI 接口需对 Signature 进行校验。若校验失败,则视该通知消息无效。

生成签名

云平台会按照以下步骤生成签名。

  1. 获取所有的 HTTP Get 请求参数。如 p1、p2、p3

  2. 进行字典排序。假设排序后的顺序是 p1、p3、p2

    sort(p1, p2, p3)
  3. 生成 Signature 值。

    base64_encode(HMAC_SHA256(secret_app_key, p1=1&p3=3&p2=2)

    其中,secret_app_key 是应用创建时,由平台分配,与 SSO 密钥不一样,接入方需保存好。secret_app_key 可以通过接口重新生成。

示例

  • 用户填写的通知 URL 如下:

    http://www.isvwebsite.com/?p1=1&p2=2&p3=3&signature=qingcloud-app-token[http://www.isvwebsite.com]
  • SPI 请求如下:

    headers: {'app_signature':'qingcloud-app-token'}
    url: http://www.isvwebsite.com/?p1=1&p2=2&p3=3&signature=qingcloud-app-token[http://www.isvwebsite.com?p1=1&p2=2&p3=3&signature=qingcloud-app-token]
  • 若填写的通知 URL 中本身就含有参数,如:

    http://www.isvwebsite.com/?p1=1&p2=2&p3=3&signature=qingcloud-app-token[http://www.isvwebsite.com?platform]=qingcloud
  • 那么参数也将参与签名。

    http://www.isvwebsite.com/?p1=1&p2=2&p3=3&signature=qingcloud-app-token[platform]