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对比,如果相同就表示成功