认证与签名¶
认证模式¶
当前平台的 HTTP 受保护接口采用:
Bearer Token- 时间戳
- 随机串
- MD5 签名
WebSocket 接口也复用了同样的思路,只是通过握手 Header 传递。
认证头规范¶
| Header | 必填 | 说明 |
|---|---|---|
Authorization |
是 | Bearer <token> |
X-Timestamp |
是 | Unix 时间戳(秒) |
X-Nonce |
是 | 随机字符串,时间窗口内不可复用 |
X-Signature |
是 | MD5(token + timestamp + nonce + body) |
校验顺序¶
建议按下面顺序校验:
- Token 是否存在且有效
- 时间戳是否在允许偏差内
- Nonce 是否重复
- 签名是否匹配
其中任一步失败,都应直接返回认证错误。
Token 获取¶
请求 URL¶
请求体¶
200 OK¶
Python 示例¶
import hashlib
import time
token = "<your_token>"
ts = str(int(time.time()))
nonce = hashlib.md5(str(time.time()).encode("utf-8")).hexdigest()
body = b""
signature = hashlib.md5(token.encode() + ts.encode() + nonce.encode() + body).hexdigest()
WebSocket 认证¶
WebSocket 握手时同样需要传递:
AuthorizationX-TimestampX-NonceX-Signature
具体示例见 WebSocket 实时推送。