想用车

铭行想用车系统


签名校验

<h2>请求头</h2> <p>使用请求头传递校验信息,包括:</p> <ul> <li><code>MX-Ak</code>: 账号ak,具体见下文</li> <li><code>MX-Timestamp</code>: POSIX时间戳</li> <li><code>MX-Signature</code>: 签名结果,具体见下文</li> <li><code>MX-Noise</code>: 由字母或数字组成的16位的随机字符串,防重放攻击(5分钟内不可重复)</li> </ul> <hr /> <h2>签名步骤</h2> <ol> <li>准备当前endpoint字符串。endpoint为请求端点,不包括域名和端口号。</li> <li>将请求参数(包括url query和form data)按照参数名的字典序升序排列, 并将排列后的参数按照key=value的形式拼接成字符串,不同参数之间使用&amp;分隔。 此字符串记为paramStr,可为空。</li> <li>计算请求body的md5值(注意,form data不算作body)。将md5值使用小写16进制写成字符串, 此字符串记为bodyMd5。注意:空值也具有md5。</li> <li>准备POSIX时间戳字符串(即1970-01-01 UTC至今的秒数),此字符串记为timestamp。</li> <li>生成一个随机字符串,记为noise。</li> <li>将上述五个字符串拼接为<code>$endpoint|$paramStr|$bodyMd5|$timestamp|$noise</code>, 记为signStr。</li> <li>以账号的sk为密钥,使用HMAC-SHA256对signStr进行签名,将其转为16进制小写即为签名结果。sk具体见下文</li> <li>将ak、时间戳、生成的随机数和签名结果放入请求头中,即完成请求签名。</li> </ol> <hr /> <h2>签名示例</h2> <p>假设访问的endpoint为/bos/sd-lobby/api/dummyApi, 使用POST请求,请求参数为form-data,内容param1=10,param2=11。那么上述五个字符串为:</p> <pre><code>endpoint: /bos/sd-lobby/api/dummyApi paramStr: param1=10&amp;amp;param2=11 bodyMd5: d41d8cd98f00b204e9800998ecf8427e timestamp: 1735031155 noise: osVtXUTi7eZlBE0aouSgcLLXZaywdjPr</code></pre> <p>拼接后的signStr为:</p> <pre><code>/bos/sd-lobby/api/dummyApi|param1=10&amp;amp;param2=11|d41d8cd98f00b204e9800998ecf8427e|1735031155|osVtXUTi7eZlBE0aouSgcLLXZaywdjPr</code></pre> <p>设sk为<code>HizBfsufdIBIZxNYi35nfjSIFtPjQW27</code>,则签名为:</p> <pre><code>da2a90815cd6248caa4b62a389c27917e4b4f15c4303ed6b6bf42a62932289a3</code></pre> <hr /> <h2>AS-SK</h2> <h3>测试环境</h3> <ul> <li>AK:kingdee</li> <li>SK:8dea0009353b4d23b293734205d62903</li> </ul> <h3>正式环境</h3> <ul> <li>AK:kingdee</li> <li>SK:<code>待定</code></li> </ul> <hr /> <h2>错误代码</h2> <ul> <li>1001: 无此账号</li> <li>1002: 请求已过期或为未来时刻</li> <li>1003: 时间戳格式错误</li> <li>1004: 签名校验失败</li> <li>1005: Noise为空或重复请求</li> </ul>

页面列表

ITEM_HTML