//場景:公司要跟第三方公司合作,提供接口給對方對接,這樣需要對接口進行授權,不然任何人都可以調我們公司的接口,會導致安全隱患: 思路: 在每個接口請求參數都帶上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是不是一致,一致簽名驗證就通過,不一致簽名就是失敗;