同样的签名加密算法在部分部署环境下存在问题

阅读次数 31

问题描述 现在部署在客户服务器上的应用目前都是下面这段签名算法, 其中一台接口调用等一切正常, 另一台则会出现30003错误, 需要将下面算法的URL解码部分去掉才行!

签名算法

String method = requestTemplate.method();
String paramMd5 = null;
if (StringUtil.equals(method, HttpMethod.GET)) {
    String url = requestTemplate.url();
	// 部分环境将这段解码的代码注释掉后签名才正确
    url = URLDecoder.decode(url, StandardCharsets.UTF_8);
    paramMd5 = PkUtil.encryptData(url);
    LOGGER.info("WPS:GET REQUEST URL[{}], MD5[{}]", url, paramMd5);
} else if (StringUtil.equals(method, HttpMethod.POST)) {
    byte[] body = requestTemplate.body();
    paramMd5 = PkUtil.encryptData(body);
}

String date = rfc1123Format.format(new Date());
String paramSha1 = DigestUtils.sha1Hex(config.getAppSecret() + paramMd5 + CONTENT_TYPE + date);
String authorization = "WPS-2:" + config.getAppId() + ":" + paramSha1;
requestTemplate.header("Content-Md5", paramMd5);
requestTemplate.header("Content-Type", CONTENT_TYPE);
requestTemplate.header("DATE", date);
requestTemplate.header("Authorization", authorization);

请各位大佬帮忙分析指导一下可能的原因

0 Answers