Skip to content

认证

不同的 API 模块使用不同的认证方式。

Bot API — Bot Token

Bot API 使用 Token 认证。Token 包含在请求 URL 路径中:

POST https://api.example.com/bot{token}/sendmessage

Token 由 BotFather 在创建 Bot 时颁发。服务端会验证 Token 的有效性,并据此识别 Bot 身份。

WARNING

Token 是 Bot 的唯一身份凭证,请妥善保管,不要泄露。

Wallet API — RSA 签名

Wallet API 使用请求头签名认证,需要以下 HTTP Header:

Header说明
X-bot-Id机器人 ID
X-TimestampUnix 时间戳(秒)
X-SignRSA 签名
X-Nonce消息唯一 ID(防重放)

签名生成方式

签名数据的拼接格式:

signData = botId + "\n" + method + "\n" + path + "\n" + timestamp + "\n" + nonce + "\n" + canonicalJSON
  • botId — 机器人 ID
  • method — HTTP 方法(POST)
  • path — 请求路径(如 /safew/wallet-info
  • timestamp — 同 X-Timestamp
  • nonce — 同 X-Nonce
  • canonicalJSON — 请求体的标准化 JSON

使用 RSA 私钥对 signData 进行签名,将签名结果进行 Base64 编码后填入 X-Sign

时间戳验证

服务端会检查时间戳是否在 5 分钟 有效期内。超过有效期的请求将被拒绝。

防重放

服务端会检查 X-Nonce 是否重复,重复的请求将被拒绝。

响应签名

Wallet API 的响应也包含签名头:

Header说明
X-Resp-bot-Id机器人 ID
X-Resp-Timestamp响应时间戳
X-Resp-Request-Id请求 ID(同 X-Nonce)
X-Resp-Sign响应签名