API签名认证

API签名认证讲解(为何6个参数)

什么是签名认证

使用accessKey,secretKey,来实现,签名认证,在调用接口的时候,通过这种签名认证的方式来防止用户进行恶意的刷接口。类似于使用腾讯云登第三方接口的认证。也可以将 accesskey 和 secretKey 比喻成类似与用户名与用户密码。

保证安全性的使用

一般规范由以下参数实现

通过 http request Header 头传递参数

参数1: accessKey 调用的标识(复杂,无序,无规律)

参数2:secretKey 密钥 (复杂,无序,无规律) 该参数不传递

因为我们的请求可能被人拦截,而我们把密码放进请求头里面,可能会被别人获取千万不能把密钥直接在服务器之前传递

一般是根据密钥,生成签名sign

所以要加入参数3,参数4,签名sign

参数3: 用户请求参数 body

参数4: sign 签名 —> 由 secertKey + 用户请求参数(body) 生成= sign (使用md5加密)

sign =( 用户参数 + 密钥 ) 使用签名生成算法(md5,HMac,Sha1)

例如 dzjhfakhjad = abc + abcdefgh

加密方式:

  1. 对称加密
  2. 非对称加密
  3. md5签名(不可解密) 最安全

可以使用hutool工具包的工具类。

怎么防重放?

  1. 加nonce随机数 只能用一次,一次后就失效
  2. 服务端要保存用过的随机数
  3. 加timestamp 时间戳,校验它的有效期

参数5:nonce 随机数 只能用一次 服务端要保存用过的随机数 ,留存下来。使用过的就不能再使用了。

参数6:timestamp 时间戳,校验它的有效期 5分钟内有效

服务端校验方式:

服务端用一模一样的参数和算法去生成签名,只要和用户传的一致,就表示密钥一致

综合上述,在请求头中会添加五个参数

  1. accessKey
  2. secretKey ,不传递
  3. body,用户请求参数
  4. sign,body + secretKey -》md5加密 -》sign
  5. nonce,随机数
  6. timestamp,时间戳

我是小辉,24 届应届毕业生。当下是找工作ing,欢迎关注,持续分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java编程小辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值