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 行与对应请求头去空格后完全一致。各接口的 METHODsignPath 写在该接口页。

algorithm
X-YS-Signature = Base64(RSA-SHA256-PKCS1v15(调用方私钥, 待签串))
HTTP 路径是 /v1/...,签名 PATH 默认是 /api/open + /v1/...。不要签完整 URL。

验签失败常见原因:PATH 写错、JSON 计算 hash 之后又被改写、时间戳使用毫秒、使用 URL-safe Base64。