Token 值是将请求源串以及 Secret 通过 MD5 算法生成的,用来提高传输过程参数的防篡改性。
token 值的生成共有 2 个步骤:构造源串,生成 token 值。
1. 构建源串
a.获取要请求 URI(统一资源标识符,即域名后面的地址串
示例:/openapi/service/vss/preview/getPreviewParamByCameraUuid);
b.将输入参数(系统参数和业务参数)生成 JSON 串;
c.将 a 中 URI 和 b 中得到的字符串和 secrect 拼接起来得到源串。
源串构造示例
- 原始请求信息:
screct:aa7aa8a8fa604c60866413f52563b70c
HTTP 请求方式:POST
请求的 URI 路径(不含 HOST):/openapi/service/vss/preview/getPreviewParamByCameraUuid
请求参数:
{
"appkey": "61fdb13b",
"time": 1479364577369,
"opUserUuid": "43a9a55f76474bde89ecabc1d6914a7f",
"cameraUuid": "b785bcf358154a4594651b4b21ddd0af",
"netZoneUuid": "11d0e493870d40f9b2589
}
- 构造源串
a.获取要请求的 URI:/openapi/service/vss/preview/getPreviewParamByCameraUuid
b.将输入参数(系统参数和业务参数)生成 JSON 串:{“appkey”:”24982ba6”,”time”:1479364577369,”opUserUuid”:”4
3a9a55f76474bde89ecabc1d6914a7f”,”cameraUuid”:”b785bcf358154a4594651b4b21ddd0af”,”netZoneUuid”:”11d0e4938
70d40f9b2589383cf73001f”}
c.将前两步中得到的字符串和 secrect 拼接起来得到源串(请求 URI+参数串+secret):
“/openapi/service/vss/preview/getPreviewParamByCameraUuid{"appkey":"24982ba6","time":1479364577369,"opUserUuid":"43a9a55f76474bde89ecabc1d6914a7f","cameraUuid":"b785bcf358154a4594651b4b21ddd0af","netZoneUuid":"11d0e493870d40f9b2589383cf73001f"}aa7aa8a8fa604c60866413f52563b70c”
注:生成 token 的请求参数顺序与请求 URL 中的参数顺序保持一致
2. 生成 token 值
使用 MD5 算法对 1 中得到的源串进行运算,得到 token 值(大写):
MD5(/openapi/service/vss/preview/getPreviewParamByCameraUuid{"appkey":"24982ba6","time":1479364577369,"opUserUuid":"43a9a55f76474bde89ecabc1d6914a7f","cameraUuid":"b785bcf358154a4594651b4b21ddd0af","netZoneUuid":"11d0e493870d40f9b2589383cf73001f"}aa7aa8a8fa604c60866413f52563b70c)
token 值:5067D805D98456393A1C5DFE849B883B
注:每次请求都重新生成 token 值,token 值为 32 位长度的大写字
3、发起请求
将 token 参数和值拼接到 POST 请求 URL 后面
http://IP:PORT/openapi/service/base/user/getPreviewParamByCameraUuid?token=5067D805D98456393A1C5DFE84
9B883B