鉴权V2版本

使用 xstore 标准的签名鉴权方式:通过在请求头中加入Date以及Signature的方式进行鉴权。

URL前缀

以下的URL中均不包含链接地址(如https://xstore.ctyun.cn/)和部署的上下文地址(如/xstore-transcode)

签名生成规则

1、 signature形式:AWS {access-key}:{hash-of-headers-and-secret}

  • 使用具体的access key代替{access-key} ,在其后紧跟一个冒号:;
  • 将x-amz开头及特定的请求头和 对应的secret key hash 之后的结果替换{hash-of-header-and-secret}。

2、签名AWS {access-key}:{hash-of-headers-and-secret}生成步骤:

  • 获取头字符串;
  • 将请求头字符串格式化为规范格式;
  • 使用 SHA-1 hashing 算法生成 HMAC 查看 RFC 2104 和 HMAC 获取详细信息;
  • 使用 base-64 将 hmac 结果再次编码;
  • 将请求头字符串格式化为规范格式;
  • 获取所有以 x-amz- 开头的所有字段;
  • 确保这些字段都是小写字母;
  • 按照字母顺序将这些字段排序;
  • 将多个实例中相同的字段名称合并到一个单个字段中 在这个字段中使用逗号分隔这些值;
  • 将字段的值中的空格和换行符替换为单个空格;
  • 删除冒号前后的空格;
  • 在每个字段后追加一个空行;
  • 将所有字段合并到头字符串中;
  • 将 HMAC 字符串使用 base-64编码的结果替换 {hash-of-header-and-secret}。

接口返回结果

所有接口都采用restful风格编写,接口返回结果统一为json形式:

字段 说明
code 返回码,0表示成功,非0表示失败;
message 成功/或失败信息;
content 返回数据集;
pageCount 总页数;
total 总记录数;
data 为备用字段

对于查询接口都兼容分页/不分页形式:

参数 说明
pageIndex 起始页码,从0开始
pageSize 每页数据条数,从1开始
备注 不传分页信息查出全部

SHELL实例

#!/bin/sh
host="gdoss.xstore.ctyun.cn"
accessKey="请替换此处为自有AK"
secretKey="请替换此处为自有SK"

DateValue="`TZ=GMT date +'%a, %d %b %Y %H:%M:%S GMT'`"
Url="http://${host}${resource}"
StringToSign="{httpMethod}\n\n\n${DateValue}\n${resource}"
signature=`echo -en ${StringToSign} | openssl sha1 -hmac ${secretKey} -binary | base64`

curl ${Param} -H \"Date: ${DateValue}\" -H \"signature: AWS ${accessKey}:${signature}\" \"${Url}\"