鉴权认证

1 背景介绍

鉴权认证是为了保证所有开放接口openAPI的安全性而设计的,商米数字开放平台所有HTTP接口都需要经由本文档描述方式进行鉴权。以下内容描述的是如何通过接口的健全认证机制,接入商米数字店铺开放平台。

2 接口规范

2.1 协议说明

对接的openAPI接口目前只开放HTTPS方式,所有的消息一律采用POST方式。

2.2 签名规则

对于所有的接入者,数字店铺开放平台会分配以下内容:

  • app_id: 唯一标识接入身份
  • secret_key: 该用户独有的签名校验

签名规则应用于对HTTP请求中的参数进行MD5签名,规则顺序如下:

  1. 参数必须包含random字段,为一个随机字符串,由数字和字母组成,长度范围为6-10位
  2. 参数必须包含timestamp字段 ,为当前的unix timestamp,精度到秒级,10位数字, 格式可以参考 https://tool.chinaz.com/tools/unixtime.aspx
  3. 参数必须包含app_id字段
  4. 首先对于所有包含key的传递参数按照ASCII码顺序从小到大排序,将key-value键值对依此组成字符串 (文件参数不参与验签)
  5. 在字符串尾部拼接该SaaS厂商独有的签名校验secret_key值,拼接方法见例子详述
  6. 对字符串进行MD5签名
  7. 对生成的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成功
5090sign校验不正确
5091timestamp的请求过期