企业服务端接口认证案例

接口认证方式

  调用方要向管理员获取 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"

}

猜你喜欢

转载自www.cnblogs.com/yuqlblog/p/9167593.html