zoukankan      html  css  js  c++  java
  • 接口鉴权,提供给第三方调用的接口,进行sign签名

    //场景:公司要跟第三方公司合作,提供接口给对方对接,这样需要对接口进行授权,不然任何人都可以调我们公司的接口,会导致安全隐患:
    
    思路: 在每个接口请求参数都带上ApiKey 和sign签名:
     我们在对接前,给对方提供一个ApiKey 和密码secrect,这2个值随便自己定义,只要双方都约定好就行了:
    
    对方要做的事情: 对请求参requestDTO 除sign签名字段外,转成JSON字符串,
    然后前后拼上secrect,再MD5加密得到sign签名:
    伪代码:
         String reqStr=JSON.toJSONStirng(requestDTO);
         StringBuilder sb = new StringBuilder();
            sb.append(BeeBoxConstant.SECRET);
            sb.append(json);
            sb.append(BeeBoxConstant.SECRET);
            String sign = Md5Util.getMd5(sb.toString());
          requestDTO.setSign(sign);
    注意:requestDTO不能将密码也带过去
    
    我们要做的事情:
    
    拿到对方请求参数:requestDTO
      获取sign值和apiKey:
      String sign=requestDTO.getSign();
      String apiKey=requestDTO.getApiKey();
      通过apikey去获得密码secrect,因为apikey和密码是我们提供的,所以肯定知道在哪里获取;
    
      之后请求对象设置sign值为null:
      requestDTO.setSign(null);
      转成JSON,然后按同样的方式生成sign签名:
    
     String reqStr=JSON.toJSONStirng(requestDTO);
         StringBuilder sb = new StringBuilder();
            sb.append(BeeBoxConstant.SECRET);
            sb.append(json);
            sb.append(BeeBoxConstant.SECRET);
            String sign2 = Md5Util.getMd5(sb.toString());
      比较对方传过来的sign值和我们计算得到的sign2是不是一致,一致签名验证就通过,不一致签名就是失败;    
  • 相关阅读:
    webpack学习笔记五
    webpack的学习使用四
    判断数组B是否为数组A的子集
    html5标签知多少
    图代文时隐藏文字的兼容实现
    负margin的移位参考线
    font-size 兼容问题
    IE6读取不到样式文件bug
    一个重构眼中的“项目管理”
    唯物 VS 唯心
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/11165757.html
Copyright © 2011-2022 走看看