鉴权方式介绍
字段 | 说明 |
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进行展示。