本文介绍了调用内容检测API的签名机制。

签名流程

步骤1. 序列化请求头

按照以下方式,将所有以 x-acs-开头的HTTP头拼接成字符串:
  • 抽取所有以x-acs-开头的HTTP头。
  • 对抽取出来的头按字典顺序排序。
  • 对每个HTTP头,按"HTTP头名称" + ":" + "HTTP头值" + "\n"拼接。

步骤2. 序列化URI和query参数

按照 uri + "?clientInfo=" + "ClientInfo的JSON字符串"方式拼接URI和 clientInfo参数。
说明
这里不需要URL编码。但在HTTP请求中,是应该URL编码的。

步骤3. 构建完整的待签名字符串

按照以下方式,构建完整的待签名字符串:
"POST\napplication/json\n" + "HTTP头Content-MD5的值" + "\n" + "application/json" + "\n" + "HTTP头Date的值" + "\n" + "序列化请求头" + "序列化uri和query参数"

步骤4. 生成签名

对步骤3中得到的字符串,使用AccessKeyId进行HMAC-SHA1算法加密,并进行base64编码。然后将结果放到HTTP头Authorization中的signature

"acs" + " " + AccessKeyId + ":" + signature
说明
acsAccessKeyId之间有空格。HMAC-SHA1算法中的secret key是和AccessKeyId对应的secret。

示例

以下是一个完整的调用图片同步检测任务的待签名字符串示例:
POST
application/json
C+5Y0crpO4sYgC2DNjycug==
application/json
Tue, 14 Mar 2017 06:29:50 GMT
x-acs-signature-method:HMAC-SHA1
x-acs-signature-nonce:339497c2-d91f-4c17-a0a3-1192ee9e2202
x-acs-signature-version:1.0
x-acs-version:2018-05-09
/green/image/scan?clientInfo={"ip":"127.0.0.2","userId":"120234234","userNick":"Mike","userType":"others"}