Api接口签名设计
一、前言
传统的接口是开放的,但是容易被不法分子利用。由此对接口签名设计的背景就是维护接口的安全性
二、设计原则
- 请求唯一性
- 请求时效性
- 请求可审计性
三、签名规则
- 由
鉴权中心
统一为调用方发放clientId
和clientSecret
(也可以是appId
和appSecret
) - 需要生成时间戳
timestamp
(可以限制时效性) - 需要生成流水号
nonce
(流水号,可用后期安全审计) - 需要生成
signature
(由clientId
、clientSecret
、timestamp
、nonce
混合加密,加密方法可自定)
四、请求规则
- 调用方维护好
clientId
和clientSecret
- 生成
timestamp
和nonce
- 由
clientId
、clientSecret
、timestamp
、nonce
加密生成signature
- 将
clientId
、timestamp
、nonce
和signature
放在请求头部 -
鉴权中心
根据当前时间戳与timestamp
做比较,看是否过期 -
鉴权中心
收到clientId
之后,查询出clientSecret
,加上传递过来的timestamp
和nonce
,用同样的加密方法加密,获得的加密结果和signature
对比,如果相同就表示成功