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是不是一致,一致签名验证就通过,不一致签名就是失败;    
  • 相关阅读:
    ASP.NET MVC 扩展相关
    新.NET开发十大必备工具
    c#调用存储过程两种方法
    TweakUI取消pc喇叭声
    baidu mp3竟然还加密,太扯了
    NTLM在使用代理服务器的情况下,第三次握手可能出错
    httpclient解析gzip网页
    eclipse不能自动编译工程的解决方法
    bat设置环境变量
    java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/11165757.html
Copyright © 2011-2022 走看看