Open API / 签名规范
签名规范
全部 Open 接口使用同一套 RSA2 头。每个接口页只补充该接口的 PATH 和 body,不再重复算法。
每次请求重新计算签名,禁止缓存 X-YS-Signature。
请求头
| Header | 说明 | |
|---|---|---|
X-YS-App-Id | 必填 | 已分配的 AppID |
X-YS-Timestamp | 必填 | Unix 秒。偏差超过 120 秒拒绝 |
X-YS-Nonce | 必填 | 随机串。同一 AppID 约 120 秒内不可重复 |
X-YS-Request-Id | 必填 | 请求 ID,建议唯一 |
X-YS-Sign-Type | 必填 | 固定 RSA2 |
X-YS-Key-Version | 必填 | v1 |
X-YS-Signature | 必填 | 私钥签名,标准 Base64 |
X-YS-Original-Path | 可选 | 网关改写 path 时,填写签名所用 PATH |
待签串
8 行,以 \n 拼接,末尾无换行。第 3 行(query)无查询串时为空。
canonical
METHOD
{signPath}
{query}
{AppId}
{Timestamp}
{Nonce}
{RequestID}
{bodyHash}
bodyHash = 小写 hex(sha256(实际发出的 HTTP body 字节))。第 4–7 行与对应请求头去空格后完全一致。各接口的 METHOD 与 signPath 写在该接口页。
algorithm
X-YS-Signature = Base64(RSA-SHA256-PKCS1v15(调用方私钥, 待签串))
HTTP 路径是
/v1/...,签名 PATH 默认是 /api/open + /v1/...。不要签完整 URL。验签失败常见原因:PATH 写错、JSON 计算 hash 之后又被改写、时间戳使用毫秒、使用 URL-safe Base64。