四、安全认证

4.1、接口约定

(1) 验证签名

调用方按照约定好的算法生成签名字符串,作为请求的一部分,接口提供方验算签名即可 知是否合法。步骤通常如下:

①接口提供方给出 app_key 和 app_secret

②调用方根据 app_key 和 app_secret 以及请求参数,按照一定算法生成签名 sign,具体 算法参考下面

③接口提供方验证签名

(2) 传输协议

HTTPS

4.2、接口参数

(1) 接口参数格式

接口参数格式定义如下:

①请求参数格式 application/x-www-form-urlencoded,如

/api/?f=1&b=23&k=33&sign=signValue;

②返回参数格式 application/json,如

{"id":1,"name":"张三"}

(2) 请求参数类型

系统参数

名称 类型 必选/可选 备注
app_key String 必选 请求来源系统的名称
app_version String 可选 用于统计客户端的版本号
timestamp long 必选 时间戳,格林威治时间起至现在的总毫秒数。本系统允许客户端请求最大时间误差为 10 分钟,(注:时间戳13位)。
sign String 必选 API 输入参数签名结果,签名算法介绍参照下面的介绍。
token String 可选 用户身份标识,用于识别用户,登录前不需要,登录后的接口需要

业务参数

API 调用除了必须包含公共参数外,如果 API 本身有业务级的参数也必须传入,每个 API 的业务级参数请参考下面接口列表说明。

4.3、签名算法

(1) 根据请求参数,对签名进行验证,签名不合法的请求将会被拒绝 。

(2) 生成签名的步骤如下:

①将所有业务请求参数及系统参数(app_key 和 timestamp),按字母先后顺序排序

②参数名称和参数值链接成一个字符串 A

③在字符串 A 的 首尾加上 app_secret 组成一个新字符串 B

④对字符串 B 进行 md5,取 32 位小写,得到签名 sign

(3) 举例:

系统参数:app_key=app1,app_secret=secret0

时间戳:timestamp=1501035945348

请求的业务参数为:f=1,b=23,k=33

请求地址:https://xxxxx.com/services/v3/api

签名生成如下:

a. 排序后为:

app_key=app1,b=23,f=1,k=33,timestamp=1501035945348

b. 参数名称和参数值链接成一个字符串

app_keyapp1b23f1k33timestamp1501035945348,

c.在字符串 A 的 首尾加上 app_secret 组成一个新字符串

secret0app_keyapp1b23f1k33timestamp1501035945348secret0

d.对字符串 B 进行 md5 得到签名 sign 签名

sign=md5(secret0app_keyapp1b23f1k33timestamp1501035945348secret0) , 即:
576e38fa4cf1a8a33f2381c483bc448f

e.最终的请求地址为 :

https://xxxxx.com/services/v3/api?app_key=app1&b=23&f=1&k=33&timestamp=15010359453
48&sign=576e38fa4cf1a8a33f2381c483bc448f

4.4、接口地址

环境 接口域名
测试环境 https://test-mcs.czb365.com/services/v3/
线上环境 https://mcs.czb365.com/services/v3/

4.5 返回参数 e code 字典表

(1) 安全认证相关的错误码 code 字典表

code 含义
10011 非法请求,缺少系统级参数(app_key,sign,timestamp)
10012 非法请求,未知的调用方
10013 非法请求,请求过期
10014 非法请求,签名 sign 验证失败
10021 非法请求,缺少 Token
10022 非法请求,错误的 Token

(2) 业务接口通用错误码 code

code 含义
100 参数非法,场景:缺少参数、参数非空验证失败、参数格式错误、业务逻辑验证失败等,对应的 message 信息,可以给终端用户展示
500 参数非法,场景:服务端异常、依赖的数据库或接口异常、业务逻辑处理失败等,对应的 message 信息,可以给终端用户展示
200 处理成功,场景:提交给服务方的业务处理完成,或者查询数据成功;调用方可以直接进行跳转成功页面或数据展示
其他 其他 code,参考具体的接口定义,多用于客户端特殊分支逻辑处理 或异常页面跳转
Last Updated: 5/18/2020, 5:49:48 PM