四、安全认证
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×tamp=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,参考具体的接口定义,多用于客户端特殊分支逻辑处理 或异常页面跳转 |