接口鑒權,提供給第三方調用的接口,進行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是不是一致,一致簽名驗證就通過,不一致簽名就是失敗;    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM