请求签名
更新时间:
适用范围
文本审核、图片审核、音频审核、视频审核、网页审核等 HTTP API 均使用同一套请求签名规则。
当用户请求 API 时,需要使用 appId 和 secretKey 对请求做签名。API 收到带签名信息的请求后,会使用相同算法验证签名;如果签名不一致,API 将返回 401。
appId 和 secretKey 可在 <控制台-服务配置> 中获取。
请求 Header
Header
示例值
是否必需
描述
X-AppId
1000
必需
项目的唯一标识
X-TimeStamp
2024-01-31T07:59:03Z
必需
请求发起时的 UTC 时间,格式为 yyyy-MM-dd'T'HH:mm:ss'Z'
Authorization
*****
必需
请求签名
签名计算方法
- 构造规范化的请求字符串(Canonicalized Query String)。
对于 JSON 请求,将请求体 JSON 字符串以 UTF-8 字符编码做 SHA256 编码后转换为 16 进制字符串(注意不是 Base64)。
CanonicalizedQueryString = hex(sha256(jsonBody))
- 构造被签名字符串
StringToSign。其中 \n 代表 ASCII 里的换行符。
StringToSign = HTTPMethod + "\n" +
HostHeaderInLowercase + "\n" +
HTTPRequestURI + "\n" +
CanonicalizedQueryString + "\n" +
"X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
"X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI 是请求 URI 的绝对路径,不包含请求参数。如果 HTTPRequestURI 为空,也要保留一个正斜杠(/)。
- 使用 HMAC-SHA256 计算签名。
StringToSign 作为签名字符串,secretKey 作为密钥,SHA256 作为哈希算法。
有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
-
将 HMAC-SHA256 的计算结果转换为 Base64 字符串。
-
将 Base64 字符串放入 HTTP 请求 Header 的 Authorization。
签名示例
下面以网页审核提交接口为例。
请求信息:
HTTPMethod=POST
Host=msafe.ilivedata.com
HTTPRequestURI=/api/v1/media/web/submit
X-AppId=1000
X-TimeStamp=2024-01-31T07:59:03Z
secretKey=****
请求体:
{"url":"https://example.com/page.html","strategyId":"DEFAULT"}
生成 CanonicalizedQueryString:
e87c44a05094b0129745a6ea138b11d62ff46fa3790cf7cd5ef0f4125e5f865f
生成 StringToSign:
POST
msafe.ilivedata.com
/api/v1/media/web/submit
e87c44a05094b0129745a6ea138b11d62ff46fa3790cf7cd5ef0f4125e5f865f
X-AppId:1000
X-TimeStamp:2024-01-31T07:59:03Z
HMAC 计算得到的签名:
*****
设置请求 Header:
Authorization: *****
适用范围
文本审核、图片审核、音频审核、视频审核、网页审核等 HTTP API 均使用同一套请求签名规则。
当用户请求 API 时,需要使用 appId 和 secretKey 对请求做签名。API 收到带签名信息的请求后,会使用相同算法验证签名;如果签名不一致,API 将返回 401。
appId 和 secretKey 可在 <控制台-服务配置> 中获取。
请求 Header
| Header | 示例值 | 是否必需 | 描述 |
|---|---|---|---|
| X-AppId | 1000 | 必需 | 项目的唯一标识 |
| X-TimeStamp | 2024-01-31T07:59:03Z | 必需 | 请求发起时的 UTC 时间,格式为 yyyy-MM-dd'T'HH:mm:ss'Z' |
| Authorization | ***** | 必需 | 请求签名 |
签名计算方法
- 构造规范化的请求字符串(Canonicalized Query String)。
对于 JSON 请求,将请求体 JSON 字符串以 UTF-8 字符编码做 SHA256 编码后转换为 16 进制字符串(注意不是 Base64)。
CanonicalizedQueryString = hex(sha256(jsonBody))
- 构造被签名字符串
StringToSign。其中\n代表 ASCII 里的换行符。
StringToSign = HTTPMethod + "\n" +
HostHeaderInLowercase + "\n" +
HTTPRequestURI + "\n" +
CanonicalizedQueryString + "\n" +
"X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
"X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI 是请求 URI 的绝对路径,不包含请求参数。如果 HTTPRequestURI 为空,也要保留一个正斜杠(/)。
- 使用 HMAC-SHA256 计算签名。
StringToSign作为签名字符串,secretKey作为密钥,SHA256 作为哈希算法。
有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
-
将 HMAC-SHA256 的计算结果转换为 Base64 字符串。
-
将 Base64 字符串放入 HTTP 请求 Header 的
Authorization。
签名示例
下面以网页审核提交接口为例。
请求信息:
HTTPMethod=POST
Host=msafe.ilivedata.com
HTTPRequestURI=/api/v1/media/web/submit
X-AppId=1000
X-TimeStamp=2024-01-31T07:59:03Z
secretKey=****
请求体:
{"url":"https://example.com/page.html","strategyId":"DEFAULT"}
生成 CanonicalizedQueryString:
e87c44a05094b0129745a6ea138b11d62ff46fa3790cf7cd5ef0f4125e5f865f
生成 StringToSign:
POST
msafe.ilivedata.com
/api/v1/media/web/submit
e87c44a05094b0129745a6ea138b11d62ff46fa3790cf7cd5ef0f4125e5f865f
X-AppId:1000
X-TimeStamp:2024-01-31T07:59:03Z
HMAC 计算得到的签名:
*****
设置请求 Header:
Authorization: *****