接口加密

目录

  • 启动加密
  • 基本说明
  • Get请求
  • Post请求
  • Put/Delete请求

注意默认是关闭加密,可自行开启

 

启动加密

具体查看文件 api/config/params.php

// 签名验证默认关闭验证,如果开启需了解签名生成及验证
'user.httpSignValidity' => false,
// 签名授权公钥秘钥
'user.httpSignAccount' => [
    'doormen' => 'e3de3825cfbf',
],

基本说明

Url测试访问地址:

// 注意系统默认关闭了该测试控制器 请去 api 的 main 文件内开启 sign-secret-key 路由
http://www.example.com/api/sign-secret-key

签名sign的生成规则:
将需要参与签名的参数按照参数名字符串顺序升序排列,并用请求查询串的形式依次拼接。
格式为:p1=v1&p2=v2&p3=v3
将以上拼好的结果后面直接加上appSecret,形成待签名字符串
对待签名字符串按照UTF-8编码做MD5摘要运算,结果转化为32位小写签名摘要。
固定参数

参数名 参数类型 必填 默认 说明 备注
appId string 授权公钥 后台给予,文档测试值:doormen
nonceStr string 随机数 自行生成 默认8位,文档测试值:z7cl7WR9
time int 时间戳 自行生成 10位,注意和当前校验时间不能大于60秒,文档测试值:1539846942
sign string 签名 加密后出现

不用传参但是需要参与加密

参数名 参数类型 必填 默认 说明 备注
appSecret string 授权秘钥 后台给与,文档测试值:e3de3825cfbf

Get 请求

1、例如以下的接口请求方式
请求地址(Get)

/v1/site/send

参数

参数名 参数类型 必填 默认 说明 备注
mobile string 账号 测试值为:15888888888
请求时候测试拼接字符串为:

Get请求所有的参数都是在url里面所以mobile加入计算

appId=doormen&mobile=15888888888&nonceStr=z7cl7WR9&time=1539846942e3de3825cfbf

// php版加密方式
$sign = strtolower(md5('上面的字符串'));

// 测试生成的sign:
94c897114201d7f9b4adf03b5e3afc8f

// 查看最后生成的Url:
appId=doormen&mobile=15888888888&nonceStr=z7cl7WR9&time=1539846942&sign=94c897114201d7f9b4adf03b5e3afc8f

注意:如果是请求详情例如url为 /v1/member/info/1,你的参与加密参数要额外带上一个 id为1的参数 比如

// 原因见 Put/Delete 请求说明 一个道理
appId=doormen&id=1&mobile=15888888888&nonceStr=z7cl7WR9&time=1539846942e3de3825cfbf

Post请求

1、例如以下的接口请求方式
请求地址(Post)

/v1/site/login

参数

参数名 参数类型 必填 默认 说明 备注
username string 账号
password string 密码

2、上面的参数无需加密,只需要加密基本的参数

// 默认参数
appId=doormen&nonceStr=z7cl7WR9&time=1539846942e3de3825cfbf

// php版加密方式
$sign = strtolower(md5('上面的字符串'));

// 测试生成的sign:
94c897114201d7f9b4adf03b5e3afc8f

// 查看最后生成的Url:
/v1/site/login?appId=doormen&nonceStr=z7cl7WR9&time=1539846942&sign=94c897114201d7f9b4adf03b5e3afc8f

Put/Delete请求

1、例如以下的接口请求方式
请求地址(Put/Delete)

/v1/member/member/[ID]

参数

参数名 参数类型 必填 默认 说明 备注
nickname string 昵称

2、上面的参数无需加密,只需要加密基本的参数

但是由于restful的特殊机制其实以上url省略了一个id参数,所以我们加密的时候要附带一个id参数

// 默认参数
appId=doormen&id=1&nonceStr=z7cl7WR9&time=1539846942e3de3825cfbf

// php版加密方式
$sign = strtolower(md5('上面的字符串'));

// 测试生成的sign:
94c897114201d7f9b4adf03b5e3afc8f

// 查看最后生成的Url:
/v1/member/member/1?appId=doormen&nonceStr=z7cl7WR9&time=1539846942&sign=94c897114201d7f9b4adf03b5e3afc8f

 

发表回复

登录... 后才能评论