Docusignapi 使用HMAC安全性和RESTAPI验证webhook请求
我正在使用DocusSign connect webhook服务,希望使用HMAC安全性来验证请求。为此,我已按照中提到的说明进行操作 即:Docusignapi 使用HMAC安全性和RESTAPI验证webhook请求,docusignapi,docusignconnect,Docusignapi,Docusignconnect,我正在使用DocusSign connect webhook服务,希望使用HMAC安全性来验证请求。为此,我已按照中提到的说明进行操作 即: 在我们DocuSign上的帐户上,我为Connect设置了Include HMAC签名,并创建了一个Connect身份验证密钥 从Docusign Connect接收到连接消息,其中包含使用应用程序定义的HMAC密钥散列的数据的标头 但在第三步中面临问题,即使用以下代码验证HMAC签名- 但它总是返回false 谁知道我的哈希代码与从DocuSign收到的
谁知道我的哈希代码与从DocuSign收到的哈希代码不同吗?您的比较测试错误,或者您的有效负载变量包含太多或太少 要测试比较,请打印出
computedHash
和headerSign
要测试您的有效负载
值,请将其打印出来,并检查它是否是发送给侦听器(您的服务器)的POST请求的整个主体
还要检查您是否只有一个X-DocuSign-Signature
标题。一种方法是确认标头X-DocuSign-Signature-2
我已经提交了内部错误报告DEVDOCS-4874,因为它有一个错误
// x-docusign-signature headers
String headerSign = request.getHeader("X-DocuSign-Signature-1");
String secret = "....";
-------
public static boolean HashIsValid(String secret, String payload,
String headerSign)
throws InvalidKeyException, NoSuchAlgorithmException,
UnsupportedEncodingException {
String computedHash = ComputeHash(secret, payload);
boolean isEqual =
MessageDigest.isEqual(computedHash.getBytes("UTF-8"),
headerSign.getBytes("UTF-8"));
return isEqual;
}
------
public static String ComputeHash(String secret, String payload)
throws InvalidKeyException, NoSuchAlgorithmException {
String digest = "HmacSHA256";
Mac mac = Mac.getInstance(digest);
mac.init(new SecretKeySpec(secret.getBytes(), digest));
String base64Hash = new String(
Base64.getEncoder().encode(mac.doFinal(payload.getBytes())));
return base64Hash;
}