1 背景介绍
鉴权认证是为了保证所有开放接口openAPI的安全性而设计的,商米数字开放平台所有HTTP接口都需要经由本文档描述方式进行鉴权。以下内容描述的是如何通过接口的健全认证机制,接入商米数字店铺开放平台。
2 接口规范
2.1 协议说明
对接的openAPI接口目前只开放HTTPS方式,所有的消息一律采用POST方式。
2.2 签名规则
对于所有的接入者,数字店铺开放平台会分配以下内容:
- app_id: 唯一标识接入身份
- secret_key: 该用户独有的签名校验
签名规则应用于对HTTP请求中的参数进行MD5签名,规则顺序如下:
- 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位
- 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考 https://tool.chinaz.com/tools/unixtime.aspx
- 参数必须包含app_id字段
- 首先对于所有包含key的传递参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串 (文件参数不参与验签)
- 在字符串尾部拼接该SaaS厂商独有的签名校验secret_key值,拼接方法见例子详述
- 对字符串进行MD5签名
- 对生成的MD5签名转化为全大写
示例:
假如需要传入的参数如下:
product_id: 389238
user_id: 29389
content: newproductmask
environment: test
则按照规则生成签名为
str1 = "app_id=2039dds&content=newproductmask&environment=test&product_id=389238&random=289192×tamp=1593029283&user_id=29389"
str2 = str1 + "&key=kdsofkdsnflke9382938k"
sign = MD5(str2).upper()
最终输出的参数为:
商米服务云平台会校验sign是否符合要求,sign校验不正确,返回code:5090;
timestamp的请求是否在合理范围时间内,请求过期,返回code:5091。
3 校验顺序
商米数字店铺云平台会按照以下顺序进行校验
4 返回值检查
4.1 返回错误分类
作为HTTP消息返回,如果消息签名认证失败,HTTP消息会返回 401等作为提示。 如果消息签名认证通过,则进入业务层处理,此次HTTP请求返回200 OK。
具体业务层面的操作返回JSON值在消息体中。常见的消息返回类型为:
4.2 返回错误代码列表
错误代码 | 错误原因 |
0 | 成功 |
5090 | sign校验不正确 |
5091 | timestamp的请求过期 |