API签名认证

使用场景

简单的用户认证(不需要账号密码)

作用

1. 身份验证
2.  防止参数被篡改
3. 防止请求重放

实现思路

1. 使用MD5对请求参数和secretKey拼接的字符串进行加密获得客户端签名clientSign
2. 获取一个随机数nonce
3. 获取一个时间戳timestamp
4. 将请求参数body,accessKey,sign,nonce和timestamp放入请求头中,然后发送请求
  1. 使用MD5对请求参数和secretKey拼接的字符串进行加密是为了验证身份和防止请求参数被篡改
  2. 随机数nonce和时间戳timestamp:请求被服务端接受后nonce会被存入内存中(设置为5分钟后自动删除),timestamp用于判断该请求是否为五分钟之内发送的请求,防止请求在五分钟之后重放。
    • 每次请求到达服务端时,服务器会先判断该请求是否是5分钟之内发的请求,如果不是则说明该请求为重放请求,则执行拒绝请求。
    • 如果是5分钟之内发的请求,则服务器会查看每个请求的nonce在内存中是否存在,假如已经存在,则判断该请求为重放,拒绝该请求,假如不存在,则将nonce存入内存。

校验思路

1. 根据accessKey查询数据库获得secretKey
2. 通过secretKey和body获得服务端签名serverSign
3. 比较clientSign和serverSign是否相同
4. 查看时间戳timestamp和当前时间之差是否在五分钟之内
5. 查看内存中是否有随机数nonce
  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值