开放接口签名设计openAPI的token鉴权

安全性考虑:

1. 用户身份校验

2. 防重放攻击

3. 防参数篡改

 请求接口加公共校验参数:

| 参数 作用|

| --- | --- |

| token | 授权给用户的唯一标识  |

| timestamp | 时间戳  |

| nonce | 随机数  |

| sign | 签名 |

校验流程

申请token

由服务方提供给用户身份的唯一标识token和配对的秘钥secret,token用于识别用户身份,secret用于加密接口的参数,计算sign值

sign值计算方式

get请求

* 原始请求参数param1,param2...加上公共参数token、timestamp(当前时间)、nonce(随机数)进行自然排序,并以kv格式拼成参数字符串s:nonce=2222&param1=a&param2&timestamp=1111111&token=token

* 用secret对s进行进行hmac-sha1加密得到字符串上s2(加密方式可以自选)

* 对s2进程base64编码得的sign

post请求

* 将URL参数和表单参数去除sign后按key进行字典升序排序,以k=v格式用&连接拼成字符s1

* body中数据的MD5值s2(无body用空字符串)组装签名字符串s

* 签名字符串s=请求方法(大写)+"\n"+s1+"\n"+s2对s加密得到sign

  用密钥secret进行hmac-sha1加密得到sign1对sign1进行base64编码得到sign(加密方式可以自选)

请求方

原始url加上公共参数,计算sign值,再将sign值添加到url参数中,发送请求

服务方

* 校验时间戳是否过期

* 校验时间戳内的随机数是都过期(可用redis记录时间戳内被使用过的随机数,防重放攻击)

* 校验token是否有效

* 根据sign计算规则计算sign值并与请求中的sign比对,是否一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容