API接口签名验证
什么是接口签名
接口签名是用于保护开放接口的安全。
开放性的接口较容易遭受一些安全问题,例如伪装和篡改。例如签名可以更好的防范这些问题。
一般会根据指定的算法和相应的密钥生成相应的签名,这个签名会作为入参通过客户端一起传送给服务端。
服务端再通过算法进行校验,校验通过视为身份正确,正常放行。校验失败则视为身份不正确,不予放行。
签名流程
- 分配appkey、appsecret
- 生成签名sign
通过请求参数、时间戳、appsecret 生成签名sign
- 请求携带签名
公共参数,可放在header中统一携带
参数 | 说明 |
---|---|
appkey | 应用唯一标识,由服务方分配 |
timestamp | 时间戳,做过期校验 |
nonce | 随机值 |
sign | 签名 |
- 服务端校验
- 首先校验
timestamp
字段,如果在有效时间内比如60s则通过请求,超过则直接拒绝请求; - 校验随机值
nonce
, 有效期间内随机值一样,则认为为重复请求,直接拒绝; - 用同样的规则生成
sign
,并与请求携带的sign
做对比,一致则通过。
三方接口调用设计方案
API接口签名(防重放攻击)