企业服务端接口认证案例
接口认证方式:
调用方要向管理员获取 appkey 和 secret。
appkey:调用方唯一标识,方便 HTTP-API 统计与维护;
secret:密钥,用于生成 HTTP-API 校验所需的 token 值;
调用方每次请求都需要带上当前时间戳参数 time,这里的时间戳指 UTC时间 1970 年 01 月 01 日 00 时 00 分 00 秒(北京时间 1970 年 01 月 01 日 08 时 00 分 00 秒)起至现在的总毫秒数。
调用方遵照 HTTP-API 约定规则生成 token,并作为接口调用的请求参数传入服务端进行校验。
生成 token 值:
Token值是将请求源串以及Secret通过MD5算法生成的,用来提高传输过程参数的防篡改性。
token值的生成共有2个步骤:构造源串,生成token值。详见下面的描述。
Step1.构造源串
a.获取要请求URI(统一资源标识符,即域名后面的地址串,示例:/openapi/service/vss/preview/getPreviewParamByCameraUuid);
b.将输入参数(系统参数和业务参数)生成JSON串;
c.将a中URI和b中得到的字符串和secrect拼接起来得到源串。
请求参数:
{
"appkey": "61fdb13b",
"time": 1479364577369,
"opUserUuid": "43a9a55f76474bde89ecabc1d6914a7f",
"cameraUuid": "b785bcf358154a4594651b4b21ddd0af",
"netZoneUuid": "11d0e493870d40f9b2589383cf73001f"
}
请求参数生成 JSON 串:
{"appkey":"24982ba6","time":1479364577369,"opUserUuid":"43a9a55f76474bde89ecabc1d6914a7f","cameraUuid":"b785bcf358154a4594651b4b21ddd0af","netZoneUuid":"11d0e493870d40f9b2589383cf73001f"}
将前两步中得到的字符串和secrect拼接起来得到源串(请求URI+参数串+secret):
/openapi/service/vss/preview/getPreviewParamByCameraUuid{"appkey":"24982ba6","time":1479364577369,"opUserUuid":"43a9a55f76474bde89ecabc1d6914a7f","cameraUuid":"b785bcf358154a4594651b4b21ddd0af","netZoneUuid":"11d0e493870d40f9b2589383cf73001f"}aa7aa8a8fa604c60866413f52563b70c
Step2.生成token值
使用MD5算法对Step1中得到的源串进行运算,得到token值(大写):
MD5(/openapi/service/vss/preview/getPreviewParamByCameraUuid{"appkey":"24982ba6","time":1479364577369, "opUserUuid":"43a9a55f76474bde89ecabc1d6914a7f","cameraUuid":"b785bcf358154a4594651b4b21ddd0af","netZoneUuid":"11d0e493870d40f9b2589383cf73001f"}aa7aa8a8fa604c60866413f52563b70c)
token值:5067D805D98456393A1C5DFE849B883B
注:
1.生成token的请求参数顺序与请求URL中的参数顺序保持一致
2.每次请求都重新生成token值
3.token值为32位长度的大写字符串
发起请求:
Step1.将token参数和值拼接到POST请求URL后面
http://IP:PORT/openapi/service/base/user/getPreviewParamByCameraUuid?token=5067D805D98456393A1C5DFE849B883B
Step2.发起请求
ajax 填写参数:
{ "appkey": "61fdb13b", "time": 1479364577369, "opUserUuid": "43a9a55f76474bde89ecabc1d6914a7f", "cameraUuid": "b785bcf358154a4594651b4b21ddd0af", "netZoneUuid": "11d0e493870d40f9b2589383cf73001f" }