签名步骤
1.筛选并排序
获取所有请求参数,不包括字节类型参数,如文件、字节流,剔除 sign 字段,剔除值为空的参数,并按照参数名 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推。
2.拼接参数
将排序后的参数与其对应值,组合成"参数=参数值”的格式,并且把这些参数用&字符连接起来,此时生成的字符串为待签名字符串。
3.调用签名函数
使用 SHA256WithRSA 签名函数应用私钥对待签名字符串进行签名,对结果 Base64 编码。
4.拼接签名
把生成的签名赋值给 sign 参数,拼接到请求参数中。
签名示例
获取用户设备接口
接口说明
根据查询条件分页获取用户设备列表
接口方法
tracker.userDevice.page
请求参数
| 名称 | 类型 | 必选 | 描述 | 示例值 |
|---|---|---|---|---|
| pageNum | int | 是 | 页数,从 1 开始 | 1 |
| pageSize | int | 是 | 每页数量,大小为 1-50 条 | 10 |
| deviceCode | String | 否 | 设备标识 | 250700097T |
筛选并排序
把公共请求参数和业务请求参数加起来,然后按照参数名 ASCII 码递增排序。
appId=658409073956360262328652394
bizContent={"pageNum":1,"pageSize":10}
charset=UTF-8
format=JSON
method=tracker.userDevice.page
signType=RSA2
timestamp=1747208216323
version=1.0
拼接参数
将排序后的参数与其对应值,组合成"参数=参数值”的格式,并且把这些参数用&字符连接起来。 则待签名字符串为:
appId=658409073956360262328652394&bizContent={"pageNum":1,"pageSize":10}&charset=UTF-8&format=JSON&method=tracker.userDevice.page&signType=RSA2×tamp=1747208216323&version=1.0
调用签名函数
使用 SHA256WithRSA 签名函数应用私钥对待签名字符串进行签名,对结果 Base64 编码。 则签名字符串为:
fgGsofs1jOiWwWlEoEjl8/MeRBgLMcRB27Upx3c0WBMgaYKUvTWaB9LOcsnnSoFArA2Wn69X73271af8gqA6USqhYxC6vQDfCGOQm1k7maZ6VIMLfeY0QJR+PYQ9jbR4sizggBxBjyB3oWhgmMiRCQ5ZxUrFzjfhJi2sg6QALZsEyFJ2TpXIfdbw1DcDHRsM6825kysSWz9r4K3LcRBThSQs1HgvTM5hS3BBlsrx7FNWMXB7n+scSnugjSYewR0pNhOxv7Z3RIfd4LfNwTi5JSkjK2d5OCTH0aEjOz6jeT3jR1Xvwox5HPlrvDlkgaJZ3gOcxgNsnkWwEo0/BiY1Mw==
拼接签名
把生成的签名赋值给 sign 参数,拼接到请求参数中。 则最终请求参数为:
appId=2019032617262200001
bizContent={"pageNum":1,"pageSize":10}
charset=UTF-8
format=JSON
method=tracker.userDevice.page
signType=RSA2
timestamp=1747208216323
version=1.0
sign=fgGsofs1jOiWwWlEoEjl8/MeRBgLMcRB27Upx3c0WBMgaYKUvTWaB9LOcsnnSoFArA2Wn69X73271af8gqA6USqhYxC6vQDfCGOQm1k7maZ6VIMLfeY0QJR+PYQ9jbR4sizggBxBjyB3oWhgmMiRCQ5ZxUrFzjfhJi2sg6QALZsEyFJ2TpXIfdbw1DcDHRsM6825kysSWz9r4K3LcRBThSQs1HgvTM5hS3BBlsrx7FNWMXB7n+scSnugjSYewR0pNhOxv7Z3RIfd4LfNwTi5JSkjK2d5OCTH0aEjOz6jeT3jR1Xvwox5HPlrvDlkgaJZ3gOcxgNsnkWwEo0/BiY1Mw==
验签
从响应结果中提取出签名值(sign 参数),并对报文做格式处理生成最终验签的字符串(待验签串),然后按照签名步骤生成签名,将生成的签名和响应结果中取出来的签名进行对比,如果相同则验签成功。
