跳转至

认证与签名

认证模式

当前平台的 HTTP 受保护接口采用:

  • Bearer Token
  • 时间戳
  • 随机串
  • MD5 签名

WebSocket 接口也复用了同样的思路,只是通过握手 Header 传递。

认证头规范

Header 必填 说明
Authorization Bearer <token>
X-Timestamp Unix 时间戳(秒)
X-Nonce 随机字符串,时间窗口内不可复用
X-Signature MD5(token + timestamp + nonce + body)

校验顺序

建议按下面顺序校验:

  1. Token 是否存在且有效
  2. 时间戳是否在允许偏差内
  3. Nonce 是否重复
  4. 签名是否匹配

其中任一步失败,都应直接返回认证错误。

Token 获取

请求 URL

POST /v1/api/token

请求体

{
  "client_id": "demo",
  "client_secret": "s3cr3t"
}

200 OK

{
  "code": 1,
  "message": "OK",
  "data": {
    "token": "<64-hex>",
    "expire_at": "2025-12-06 20:00:00"
  }
}

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 握手时同样需要传递:

  • Authorization
  • X-Timestamp
  • X-Nonce
  • X-Signature

具体示例见 WebSocket 实时推送