定义 :
本质:
1. 签发签名
2. 使用签名(校验签名)
为什么需要?
1.保证安全性,不能随便一个人调用
通过http request header 头传递参数
参数1 accrssKey: 调用的标识 (复杂,无序,无规律)
参数2 secetKey : 密钥
(类似用户名和密码 ,区别 as sk 是无状态的)
!!! 千万不能把密钥在服务器之间传递(不安全),有可能会被拦截
如何解决
参数3 sign
加密方式:对称加密,非对称加密,md5签名(不可解密)
用户参数: abc+密钥 =》签名生成算法 (MD5,HMac,Sha1)=》不可解密的值
如何判断这个签名是否正确?
服务端使用一模一样的参数和算法去生成签名,只要和用户传的一致,就表示一致。
解决重放的问题?
重放的问题解释 就是通过拦截获取请求头参数,调用接口。
参数4 1.加一个随机数 只能用一次(问题服务端要保存随机数)
参数5 加一个 timestamp 时间戳 ,校验时间戳是否过期
参数6 、用户请求参数
(标准化实现)
API签名认证是一个很灵活的设置 具体参数,参数名依据业务实现