From f71c4c226ffd7c27f6726873be6af125affaf148 Mon Sep 17 00:00:00 2001 From: kils Date: Tue, 23 Apr 2024 20:21:41 +0800 Subject: [PATCH] =?UTF-8?q?fix(storage):=20=E5=AD=98=E5=82=A8=E7=AE=A1?= =?UTF-8?q?=E7=90=86=20S3=20=E5=AD=98=E5=82=A8=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20(#51)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、S3存储管理功能及文件上传回显测试通过 2、修复S3协议存储无法编辑 3、对S3私钥配置信息脱密 --- .../config/properties/RsaProperties.java | 2 ++ .../admin/common/util/SecureUtils.java | 12 ++++++++++ .../admin/system/model/resp/StorageResp.java | 8 +++++-- .../service/impl/StorageServiceImpl.java | 23 +++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/continew-admin-common/src/main/java/top/continew/admin/common/config/properties/RsaProperties.java b/continew-admin-common/src/main/java/top/continew/admin/common/config/properties/RsaProperties.java index 429f5d07..158f62b6 100644 --- a/continew-admin-common/src/main/java/top/continew/admin/common/config/properties/RsaProperties.java +++ b/continew-admin-common/src/main/java/top/continew/admin/common/config/properties/RsaProperties.java @@ -31,9 +31,11 @@ public class RsaProperties { * 私钥 */ public static final String PRIVATE_KEY; + public static final String PUBLIC_KEY; static { PRIVATE_KEY = SpringUtil.getProperty("continew-starter.security.crypto.private-key"); + PUBLIC_KEY = SpringUtil.getProperty("continew-starter.security.crypto.public-key"); } private RsaProperties() { diff --git a/continew-admin-common/src/main/java/top/continew/admin/common/util/SecureUtils.java b/continew-admin-common/src/main/java/top/continew/admin/common/util/SecureUtils.java index c4a996ee..0ba46587 100644 --- a/continew-admin-common/src/main/java/top/continew/admin/common/util/SecureUtils.java +++ b/continew-admin-common/src/main/java/top/continew/admin/common/util/SecureUtils.java @@ -44,6 +44,18 @@ public class SecureUtils { return Base64.encode(SecureUtil.rsa(null, publicKey).encrypt(data, KeyType.PublicKey)); } + /** + * 公钥加密 + * + * @param data 要加密的内容 + * @return 公钥加密并 Base64 加密后的内容 + */ + public static String encryptByRsaPublicKey(String data) { + String publicKey = RsaProperties.PUBLIC_KEY; + ValidationUtils.throwIfBlank(publicKey, "请配置 RSA 公钥"); + return encryptByRsaPublicKey(data, publicKey); + } + /** * 私钥解密 * diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/StorageResp.java b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/StorageResp.java index 8197e593..a2efe7f3 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/StorageResp.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/model/resp/StorageResp.java @@ -16,7 +16,6 @@ package top.continew.admin.system.model.resp; -import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import top.continew.admin.common.enums.DisEnableStatusEnum; @@ -72,9 +71,14 @@ public class StorageResp extends BaseDetailResp { * 私有密钥 */ @Schema(description = "私有密钥", example = "") - @JsonIgnore private String secretKey; + /** + * 私有密钥加密串 + */ + @Schema(description = "私有密钥加密串", example = "") + private String secretKeyEncrypted; + /** * 终端节点 */ diff --git a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java index 3d9db066..ef21cfa9 100644 --- a/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java +++ b/continew-admin-system/src/main/java/top/continew/admin/system/service/impl/StorageServiceImpl.java @@ -28,6 +28,7 @@ import org.dromara.x.file.storage.core.FileStorageServiceBuilder; import org.dromara.x.file.storage.core.platform.FileStorage; import org.springframework.stereotype.Service; import top.continew.admin.common.enums.DisEnableStatusEnum; +import top.continew.admin.common.util.SecureUtils; import top.continew.admin.system.enums.StorageTypeEnum; import top.continew.admin.system.mapper.StorageMapper; import top.continew.admin.system.model.entity.StorageDO; @@ -37,6 +38,7 @@ import top.continew.admin.system.model.resp.StorageResp; import top.continew.admin.system.service.FileService; import top.continew.admin.system.service.StorageService; import top.continew.starter.core.constant.StringConstants; +import top.continew.starter.core.util.ExceptionUtils; import top.continew.starter.core.util.URLUtils; import top.continew.starter.core.util.validate.CheckUtils; import top.continew.starter.core.util.validate.ValidationUtils; @@ -61,16 +63,37 @@ public class StorageServiceImpl extends BaseServiceImpl SecureUtils.decryptByRsaPrivateKey(req.getSecretKey())); + ValidationUtils.throwIfNull(secretKey, "密钥解密失败"); + req.setSecretKey(secretKey); + } + @Override protected void beforeUpdate(StorageReq req, Long id) { + decryptSecretKey(req); String code = req.getCode(); CheckUtils.throwIf(this.isCodeExists(code, id), "修改失败,[{}] 已存在", code); DisEnableStatusEnum newStatus = req.getStatus();