• 企业服务端接口认证案例


    接口认证方式

      调用方要向管理员获取 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"
    
    }
  • 相关阅读:
    Mybatis基础最后一篇。缓存,实体类序列化(例子:public class User implements Serializable)
    Mybatis基础 lombok插件常用注解(待更)
    mysql面试题,主从复制,读写分离
    Java并发编程实战笔记—— 并发编程1
    Redis——发布和订阅
    Redis——基础使用
    javacv——读取摄像头的图像、截取视频的画面
    LeetCode——372. Super Pow
    Java——数组
    Java——擦除
  • 原文地址:https://www.cnblogs.com/yuqlblog/p/9167593.html
Copyright © 2020-2023  润新知