本文内容

签名说明

WPS-3 签名算法说明

Header 说明

Header 名称 是否必须 说明
Content-Type 目前固定为:"application/json"
Date RFC1123 格式的日期,例: Wed, 23 Jan 2013 06:43:08 GMT
Content-Md5 当 HTTP 请求的 Body 有数据时,计算 Body 的 MD5 值,否则计算空字符串的 MD5 值。再将 MD5 值转为十六进制字符串形式。即:Format("%x", md5Byte)
X-Auth 格式:“WPS-3:” + AppID + “:” + SIGN,各部分说明如下:
WPS-3: 接口版本,固定为 WPS-3
URL: 不带域名(不包含/open),只包含 url 和 query 参数(例如接口地址为 http://domain/open/api_url?app_id=aaaa,url 只用定义为/api_url?app_id=aaaa)
SIGN: sha1(ToLower(SecretKey) + Content-Md5 + URL + Content-Type + Date).HexString(),将标准 sha1 算法计算的结果,转为 16 进制字符串形式

示例

Content-Md5 示例

空字符串Content-Md5计算结果:d41d8cd98f00b204e9800998ecf8427e

完整示例

String AppId = "AK123"
String SecretKey = "sk456"
String URL = "/api/v1/dosomething?name=xiaoming&age=18"
String ContentType = "application/json"
String Date = "Wed, 03 Nov 2021 02:55:55 GMT"

当RequestBody=""时:

Date: Wed, 03 Nov 2021 02:55:55 GMT
Content-Md5: d41d8cd98f00b204e9800998ecf8427e
Content-Type: application/json
X-Auth: WPS-3:AK123:695229194add4899ffde601d691a1f2d398e7fab

当RequestBody=`{"key":"value"}`时:

Date: Wed, 03 Nov 2021 02:55:55 GMT
Content-Md5: a7353f7cddce808de0032747a0b7be50
Content-Type: application/json
X-Auth: WPS-3:AK123:995beeb31091d56cf6f203ff2eddbf04d65ac4b8

代码示例

WPS-4 签名算法说明

Header 说明

参数 参数类型 是否必须 说明
Content-Type string 目前固定为:"application/json"
Date string 取当前时间,格式:"Wed, 23 Jan 2013 06:43:08 GMT"
Authorization string 签名值,格式:<type> <credentials>

计算方法如下:

Authorization:"WPS-4 $AppId:$Signature"
Signature:hmac-sha256(AppKey, Ver + HttpMethod + URI + Content-Type + Date + sha256(HttpBody))   //sha256 与 hmac-sha256 均取小写十六进制字符串
其中:
	AppId:用于匹配签名使用的 AppKey,必须提供。
	AppKey:签名使用的 Key。
	Ver: WPS-4,表示算法版本,后续算法有更新,则变更该字段。
	HttpMethod:表示 HTTP 请求的 Method 的字符串,如 PUT、GET、POST、HEAD、DELETE 等。
	URI:不带域名,如:"/api_url?app_id=aaaa"。
	Content-Type:表示请求内容的类型,如:"application/json"。
	Date:自行对签名时限进行验证。
	HttpBody:如果为空,则 sha256(body)部分取空串。

| 注:现阶段大部分接口都使用 WPS-3 签名算法,只有少部分场景使用 WPS-4 签名算法。

本文内容