安全设置签名加密规则

鉴权方式介绍

字段说明
token令牌。用于生成签名sign,是一个长期有效的密钥,不在请求中传输。
sign签名。每次进行WebHook请求需要生成签名,用于身份验证,在请求header中传输。

具体步骤

第一步 : 获取token,在安全设置中勾选上签名加密,自动获取token。点击刷新可重新获取token。

第二步:利用第一步获取的token,进行sign生成。

  • sign生成方式
    • 每次接口请求前,将访问接口所需的参数集data(请求的所有数据) + token字符串拼接后进行SHA256运算,得到签名sign,将签名参数sign(参数名为sign)放入HTTP Header中; 将访问接口所需的请求参数(JSON格式) 放入HTTP Body。 如请求参数:
  • 举例说明
    • 第一步生成的token:123456
    • 请求参数是{“key1”: “SO.20220929001”, “key2″:”678”}
    • 生成sign = SHA256(请求参数+token) = SHA256({“key1”: “SO.20220929001”, “key2″:”678”}123456)
  • 具体java代码示例
public static void main(String[] args) throws Exception{
        String shouldSecretStr = "({" + "key1" + ":" +"SO.20220929001" + "," + "key2" + ":" + "678"+ "}" + "123456" + ")";
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(new SecretKeySpec(shouldSecretStr.getBytes("UTF-8"), "HmacSHA256"));
        byte[] shouldSecretSignData = mac.doFinal(shouldSecretStr.getBytes("UTF-8"));
        String sign =  URLEncoder.encode(new String(Base64.encodeBase64(shouldSecretSignData)),"UTF-8");
        System.out.println(sign);
    }
  • 特殊情况说明
    • 值为null的字段不作为签名计算的一部分,错误举例
{"corpid":"1","userId":"1","text_1":null,"text_2":"张三"}
  • 请求参数需要进行JSON压缩处理,不可含有空格、换行等字符,错误举例
{"corpid":"1" , "userId" : "1" ,"text_2" : "张三       "}
  • 请求参数中不可含有转义(”)等特殊字符
{"corpid":"1","userId":"1","text_2":"\张三\"}

第三步:进行请求,这边直接用postman进行展示。