OpenAPI 文档
相关地址
产品主页:
REST 接口文档地址:https://api.creatlyai.cn/docs
鉴权机制
概述
通过微服务网关接入的每个客户端有一个 appKey 和 appSecret,客户端必须对其 appSecret 保密。
Authorization
每个 API 都会带一个名为 Authorization 的 HTTP 头:
yaml
Authorization: XR1-HMAC-SHA256 Credential=<appKey>/<timestamp>/<service>,Signature=<signature>
注意:
首先加密方式,目前固定为 XR1-HMAC-SHA256​。
Credential 由 3 部分组成:appKey、当前的毫秒时间戳及服务名;Signature 即为最终签名,签名字符串的格式是 16 进制小写。
XR1-HMAC-SHA256 后面是空格,Credential 和 Signature 之间用英文逗号分隔
例如:
yaml
Authorization: XR1-HMAC-SHA256 Credential=12345678/1464519583059/creation,Signature=5caa23d394f55dbb7ac47c2ef3c14ae1252a70bbb9ad8c05e6b6ae68e8fed0c7
签名方式
签名内容:
实现版本:固定为 XR1-HMAC-SHA256​。
时间戳:当前的毫秒时间戳,例如 1463788815124​,和服务器时间相差不能超过 5 分钟。
服务:creation
HTTP 方法:GET|POST|PUT|DELETE
URI:请求路径
示例:UriEncode("/account/create")
URL 参数(如果没有,则不加这一项):按照参数名的首字母顺序升序
示例:UriEncode(<param1>) + "=" + UriEncode(<value1>) + "&" + ... + "&" + UriEncode(<paramN>) + "=" + UriEncode(<valueN>)
HTTP JSON 请求体(如果没有或者不是 JSON 请求体,比如文件流,则不加这一项)
示例:Lowercase(Hex(SHA256Hash(<payload_string>)))
以上所有内容通过 \n​ 拼接后,得到的即为待签名字符串 stringToSign。使用 appSecret​ 对其进行签名即得到 Signature:Lowercase(Hex(HmacSHA256(appSecret, stringToSign))​。
注:该签名方法参考了亚马逊 S3 的签名方式,对其进行了简化,后期可以考虑升级,可以参考 Amazon S3 Reference.