@@ -37,7 +37,7 @@ public class HttpRequestParams { | |||||
private Map<String, String> placeholderExpressions = Map.of(); | private Map<String, String> placeholderExpressions = Map.of(); | ||||
private String mediaType = MediaType.APPLICATION_JSON_VALUE; | private String mediaType = MediaType.APPLICATION_JSON_VALUE; | ||||
private RequestSignatureConfig signature; | |||||
private RequestSignatureConfig signatureConfig; | |||||
/** | /** | ||||
* 仅计算一次的表达式(同次请求后续使用上次计算值) | * 仅计算一次的表达式(同次请求后续使用上次计算值) | ||||
@@ -103,7 +103,7 @@ public class HttpRequestParams { | |||||
@AllArgsConstructor | @AllArgsConstructor | ||||
@EqualsAndHashCode(callSuper = true) | @EqualsAndHashCode(callSuper = true) | ||||
public static class RequestSignatureConfig extends SignatureConfig { | public static class RequestSignatureConfig extends SignatureConfig { | ||||
private String signatureFile; | |||||
private String signatureField; | |||||
private String signatureContext; | private String signatureContext; | ||||
private SignatureEnumGroup.SignatureLocation signatureLocation; | private SignatureEnumGroup.SignatureLocation signatureLocation; | ||||
} | } | ||||
@@ -27,7 +27,7 @@ public class HttpRes { | |||||
private Long costTimeMillis; | private Long costTimeMillis; | ||||
/** | /** | ||||
* 零时变量 | |||||
* 临时变量 | |||||
*/ | */ | ||||
@JsonInclude | @JsonInclude | ||||
private Object temporary; | private Object temporary; | ||||
@@ -50,7 +50,7 @@ public class UrlMD5Service { | |||||
parentOtherCacheKeySet.forEach(this::removeUrlMD5); | parentOtherCacheKeySet.forEach(this::removeUrlMD5); | ||||
} | } | ||||
String sendUrl = message.getHeaders().get(MessageConstants.SEED_URL, String.class); | String sendUrl = message.getHeaders().get(MessageConstants.SEED_URL, String.class); | ||||
if (!StringUtils.hasText(sendUrl)) { | |||||
if (StringUtils.hasText(sendUrl)) { | |||||
this.removeUrlMD5(sendUrl); | this.removeUrlMD5(sendUrl); | ||||
} | } | ||||
} | } | ||||
@@ -17,11 +17,11 @@ public abstract class AbstractSignatureService { | |||||
/** | /** | ||||
* 使用私钥加密 | * 使用私钥加密 | ||||
* | * | ||||
* @param context | |||||
* @param content | |||||
* @return | * @return | ||||
* @throws GeneralSecurityException | * @throws GeneralSecurityException | ||||
*/ | */ | ||||
public abstract String signatureByPriKey(String context) throws GeneralSecurityException; | |||||
public abstract String signatureByPriKey(String content) throws GeneralSecurityException; | |||||
void init(SignatureConfig signatureConfig) throws GeneralSecurityException { | void init(SignatureConfig signatureConfig) throws GeneralSecurityException { | ||||
@@ -23,15 +23,15 @@ import java.security.spec.X509EncodedKeySpec; | |||||
class RSASignatureService extends AbstractSignatureService { | class RSASignatureService extends AbstractSignatureService { | ||||
@Override | @Override | ||||
public String signatureByPriKey(String context) throws GeneralSecurityException { | |||||
public String signatureByPriKey(String content) throws GeneralSecurityException { | |||||
if (signatureContext == null) { | if (signatureContext == null) { | ||||
throw new RuntimeException("未初始化公私钥信息"); | throw new RuntimeException("未初始化公私钥信息"); | ||||
} | } | ||||
Signature signature = signatureContext.getSignature(); | Signature signature = signatureContext.getSignature(); | ||||
PrivateKey priKey = signatureContext.getPriKey(); | PrivateKey priKey = signatureContext.getPriKey(); | ||||
signature.initSign(priKey); | signature.initSign(priKey); | ||||
context = DigestUtils.md5DigestAsHex(context.getBytes(StandardCharsets.UTF_8)).toUpperCase(); | |||||
signature.update(context.getBytes(StandardCharsets.UTF_8)); | |||||
content = DigestUtils.md5DigestAsHex(content.getBytes(StandardCharsets.UTF_8)).toUpperCase(); | |||||
signature.update(content.getBytes(StandardCharsets.UTF_8)); | |||||
return Base64.encodeBase64String(signature.sign()); | return Base64.encodeBase64String(signature.sign()); | ||||
} | } | ||||
@@ -236,7 +236,6 @@ public class SourceHandler { | |||||
.setHeader(MessageConstants.TASK_ID, task.getId()) | .setHeader(MessageConstants.TASK_ID, task.getId()) | ||||
.setHeader(MessageConstants.TASK_NAME, task.getName()) | .setHeader(MessageConstants.TASK_NAME, task.getName()) | ||||
.setHeader(MessageConstants.SEED_URL, httpRes.getRequestParams().getUrl()) | .setHeader(MessageConstants.SEED_URL, httpRes.getRequestParams().getUrl()) | ||||
.setHeader(MessageConstants.SEED_URL, httpRes.getRequestParams().getUrl()) | |||||
.setHeader(MessageConstants.OTHER_CACHE_KEY_SET, otherCacheKeySet) | .setHeader(MessageConstants.OTHER_CACHE_KEY_SET, otherCacheKeySet) | ||||
.build(); | .build(); | ||||
resultMap.put(topic, nextTaskMessage); | resultMap.put(topic, nextTaskMessage); | ||||
@@ -328,7 +327,7 @@ public class SourceHandler { | |||||
private void preHandleSignature(HttpRequestParams requestParams) { | private void preHandleSignature(HttpRequestParams requestParams) { | ||||
HttpRequestParams.RequestSignatureConfig signatureConfig = requestParams.getSignature(); | |||||
HttpRequestParams.RequestSignatureConfig signatureConfig = requestParams.getSignatureConfig(); | |||||
if (ObjectUtils.isEmpty(signatureConfig)) { | if (ObjectUtils.isEmpty(signatureConfig)) { | ||||
return; | return; | ||||
} | } | ||||
@@ -340,7 +339,7 @@ public class SourceHandler { | |||||
String signature = signatureService.signatureByPriKey(signatureContext); | String signature = signatureService.signatureByPriKey(signatureContext); | ||||
// 优化 | // 优化 | ||||
if (SignatureEnumGroup.SignatureLocation.header.equals(signatureConfig.getSignatureLocation())) { | if (SignatureEnumGroup.SignatureLocation.header.equals(signatureConfig.getSignatureLocation())) { | ||||
requestParams.getHeaders().put(signatureConfig.getSignatureFile(), signature); | |||||
requestParams.getHeaders().put(signatureConfig.getSignatureField(), signature); | |||||
} | } | ||||
} catch (GeneralSecurityException e) { | } catch (GeneralSecurityException e) { | ||||
throw new RuntimeException(e); | throw new RuntimeException(e); | ||||