API签名认证讨论

API签名认证

本质:

1 签发签名

2 使用签名(校验签名)

为什么需要?

1 保证安全性,不能随便一个人调用

怎么实现?

通过 http request header 头传递参数。

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

参数 2:secretKey:密钥(复杂、无序、无规律)该参数不能放到请求头中

(类似用户名和密码,区别:ak、sk 是无状态的)

大家可以自己写代码来给用户生成 ak、sk

千万不能把密钥直接在服务器之间传递,有可能会被拦截

参数 3:用户请求参数

参数 4:sign

加密方式:对称加密、非对称加密、md5 签名(不可解密)

用户参数 + 密钥 => 签名生成算法(MD5、HMac、Sha1) => 不可解密的值

abc + abcdefgh => sajdgdioajdgioa

怎么知道这个签名对不对?

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

怎么防重放?

参数 5:加 nonce 随机数,只能用一次

服务端要保存用过的随机数

参数 6:加 timestamp 时间戳,校验时间戳是否过期。

API 签名认证是一个很灵活的设计,具体要有哪些参数、参数名如何一定要根据场景来。(比如 userId、appId、version、固定值等)

思考:难道开发者每次调用接口都要自己写签名算法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mr. CSY

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

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

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

打赏作者

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

抵扣说明:

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

余额充值