POST https://ctecs-xxx.ctapi.ctyun.local/v4/region/customerResources?prodInstId=11&startTime=2021-04-04T06:01:46ZHTTP/1.1
Content-Type:application/json
ctyun-eop-request-id:0ffb9b07-d5a8-4e19-b3ce-12dfb9705a1d
Eop-Authorization:4a4bdc57e06542199b5f98d4cd107be2 Headers=ctyun-eop-request-id;eop-date Signature=b2WEo4nh9ewn6SWOP0ii5g8L0z9CT5gprpDWntlCX9I=
Eop-date:20221107T093029Z{URI-scheme}://{Endpoint}/{resource-path}?{query-string}| 参数 | 描述 |
|---|---|
| URI-scheme | 表示用于传输请求的协议,当前所有API均采用HTTPS协议 |
| Endpoint | 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点获取。例如云主机产品服务在某个区域的Endpoint为“ctecs-xxx.ctapi.ctyun.cn” |
| resource-path | 资源路径,即API访问路径。从具体API的URI模块获 取,例如"根据regionID查询用户资源"API的resource-path为“/v4/region/customerResources” |
| query-string | 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“?limit=10”,表示查询不超过10条数据 |
| 方法 | 说明 |
|---|---|
| GET | 请求服务器返回指定资源 |
| PUT | 请求服务器更新指定资源 |
| POST | 请求服务器新增资源或执行特殊操作 |
| DELETE | 请求服务器删 除指定资源,如删除对象等 |
| HEAD | 请求服务器资源头部 |
| PATCH | 请求服务器更新资源的部分内容 ,当资源不存在的时候,PATCH可能会去创建一个新的资源。 |
| 名称 | 描述 | 是否必选 | 示例 |
|---|---|---|---|
| Content-Type | 消息体的类型 | 是 | application/json |
| ctyun-eop-request-id | 流水号(32位随机数) | 是 | 0ffb9b07-d5a8-4e19-b3ce-12dfb9705a1d |
| Eop-Authorization | 签名认证信息 | 是 | 4a4bdc57e06542199b5f98d4cd107be2 Headers=ctyun-eop-request-id;eop-date Signature=b2WEo4nh9ewn6SWOP0ii5g8L0z9CT5gprpDWntlCX9I= |
| Eop-date | 时间,15分钟有效期(实际传时间为北京东八区UTC+8时间。TZ仅为格式,非UTC时间。) | 是 | 20221107T093029Z |
| 名称 | 描述 |
|---|---|
| 需要进行签名的Header排序后的组合列表 | 将ctyun-eop-request-id、eop-date以 “header_name:header_value”的形式、以“\n”作为每个header的结尾符、以英文字母表作为header_name的排序依据将它们拼接起来。注意:EOP强制要求ctyun-eop-request-id、eop-date必须进行签名。其他字段是否需要签名看自身需求。例子(假设你需要将ctyun-eop-request-id、eop-date、host都要签名):ctyun-eop-request-id:123456789\neop-date:20210531T100101Z\n |
| encode的query | query以&作为拼接,key和value以=连接,值需要encode,query参数全部都需要进行签名 |
| toHex(sha256(原封的body)) | 传进来的body参数进行sha256摘要,对摘要出来的结果转十六进制 |
sigture示例1(假设query为空、需要进行签名的Header排序后的组合列表为“ctyun-eop-request-id:27cfe4dc-e640-45f6-92ca-492ca73e8680\neop-date:20220525T160752Z\n”、body参数做sha256摘要后转十六进制为e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855): ctyun-eop-request-id:27cfe4dc-e640-45f6-92ca-492ca73e8680\neop-date:20220525T160752Z\n\n\ne3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
sigture示例2(假设query不为空、需要进行签名的Header排序后的组合列表为“ctyun-eop-request-id:27cfe4dc-e640-45f6-92ca-492ca73e8680\neop-date:20220525T160752Z\n”、body参数做sha256摘要后转十六进制为e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855): ctyun-eop-request-id:27cfe4dc-e640-45f6-92ca-492ca73e8680\neop-date:20220525T160930Z\n\naa=1&bb=2\ne3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
| 名称 | 描述 |
|---|---|
| eop-date | yyyyMMdd'T'HHmmss'Z'(20211221T163614Z)(年月日T时分秒Z)(实际传时间为北京东八区UTC+8时间,TZ仅为格式,非UTC时间) |
| ktime | 使用eop-date作为数据,sk作为密钥,算出ktime。ktime=hmacSHA256(eop-date,sk) |
| kAk | 使用ak作为数据,ktime作为密钥,算出kAk。kAk=hmacSHA256(ak,ktime) |
| kdate | 使用eop-date的年月日值作为数据,kAk作为密钥,算出kdate |
| 名称 | 描述 |
|---|---|
| signature | hmacSHA256(sigture,kdate)将上一步的结果进行base64加密得出signature |
| 名称 | 描述 |
|---|---|
| Headers | 将需要进行签名的请求头字段以 “header_name”的形式、以“;”作为间隔符、以英文字母表作为header_name的排序依据将它们拼接起来。例子(假设你需要将ctyun-eop-request-id、eop-date都要签名):Headers=ctyun-eop-request-id;eop-date |
| Eop-Authorization | Eop-Authorization:ak Headers=xxx Signature=xxx。注意,ak、Headers、Signature之间以空格隔开。例如:Eop-Authorization:ak Headers=ctyun-eop-request-id;eop-date Signature=NlMHOhk5bVfZ9MwDSSJydcZjjENmDtpNYigJGVb。注意:如果你需要进行签名的Header不止默认的ctyun-eop-request-id和eop-date,那么你需要在http_client的请求头部中加上,并且Eop-Authorization中也需要增加 |