From 47a4d57dee3739de12ccbe9e15e25aef5b9ae558 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 1 Feb 2024 20:46:55 +0800 Subject: [PATCH] =?UTF-8?q?feat(security/password):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AE=89=E5=85=A8=E6=A8=A1=E5=9D=97-=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=99=A8=E8=87=AA=E5=8A=A8=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=EF=BC=88core=20->=20security/password=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 41 ++++++++++--------- continew-starter-core/pom.xml | 6 --- ...ot.autoconfigure.AutoConfiguration.imports | 3 +- continew-starter-dependencies/pom.xml | 21 ++++++---- .../pom.xml | 22 ++++++++++ .../PasswordEncoderAutoConfiguration.java | 30 +++++--------- .../PasswordEncoderProperties.java | 2 +- ...ot.autoconfigure.AutoConfiguration.imports | 1 + continew-starter-security/pom.xml | 27 ++++++++++++ pom.xml | 1 + 10 files changed, 99 insertions(+), 55 deletions(-) create mode 100644 continew-starter-security/continew-starter-security-password/pom.xml rename {continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password => continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure}/PasswordEncoderAutoConfiguration.java (70%) rename {continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password => continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure}/PasswordEncoderProperties.java (95%) create mode 100644 continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 continew-starter-security/pom.xml diff --git a/README.md b/README.md index 8fcb3b42..f7b8cf47 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ License -Release +Release Release @@ -15,11 +15,11 @@ Sonar Status - -Spring Boot + +Spring Boot -Java +Open JDK GitHub stars @@ -164,23 +164,24 @@ continew-starter.web: ## 模块结构 -| 模块名称 | 模块说明 | 依赖版本 | -| ---------------------------------- | --------------------------------------------------- | ------------------------------------------------------------ | -| continew-starter-core | 核心模块:包含线程池等自动配置 | Spring Boot:3.1.7
Hutool:5.8.24
mica-ip2region:3.1.6 | -| continew-starter-json-jackson | JSON 模块:Jackson 自动配置 | Jackson:2.15.3 | -| continew-starter-api-doc | API 文档模块:Knife4j 自动配置 | Knife4j:4.4.0 | -| continew-starter-web | Web 模块:跨域、全局异常、错误处理等自动配置 | Undertow:2.3.10.Final
| +| 模块名称 | 模块说明 | 依赖版本 | +|------------------------------------|-------------------------------------------| ------------------------------------------------------------ | +| continew-starter-core | 核心模块:包含线程池等自动配置 | Spring Boot:3.1.7
Hutool:5.8.24
mica-ip2region:3.1.6 | +| continew-starter-json-jackson | JSON 模块:Jackson 自动配置 | Jackson:2.15.3 | +| continew-starter-api-doc | API 文档模块:Knife4j 自动配置 | Knife4j:4.4.0 | +| continew-starter-security | 安全模块:密码编码器、数据库字段加密、JSON 脱敏等 | | +| continew-starter-web | Web 模块:跨域、全局异常、错误处理等自动配置 | Undertow:2.3.10.Final
| | continew-starter-log-httptrace-pro | 日志模块:Spring Boot Actuator HttpTrace 重置增强版 | | -| continew-starter-storage-local | 存储模块:本地存储 | | -| continew-starter-file-excel | 文件处理模块:Excel 相关配置 | Easy Excel:3.3.4 | -| continew-starter-captcha-graphic | 验证码模块:图形验证码 | Easy Captcha:1.6.2 | -| continew-starter-captcha-behavior | 验证码模块:行为验证码 | AJ-Captcha:1.3.0 | -| continew-starter-cache-redisson | 缓存模块:Redisson 自动配置 | Redisson:3.25.2 | -| continew-starter-data-mybatis-plus | 数据访问模块:MyBatis Plus 自动配置 | MyBatis Plus:3.5.5
dynamic-datasource-spring-boot-starter:4.2.0
P6Spy:3.9.1 | -| continew-starter-auth-satoken | 认证模块:SaToken 自动配置 | Sa-Token:1.37.0 | -| continew-starter-auth-justauth | 认证模块:JustAuth 自动配置 | Just Auth:1.16.6 | -| continew-starter-messaging-mail | 消息模块:邮件 | Jakarta Mail:1.1.0 | -| continew-starter-messaging-sms | 消息模块:短信 | SMS4J:3.0.4 | +| continew-starter-storage-local | 存储模块:本地存储 | | +| continew-starter-file-excel | 文件处理模块:Excel 相关配置 | Easy Excel:3.3.4 | +| continew-starter-captcha-graphic | 验证码模块:图形验证码 | Easy Captcha:1.6.2 | +| continew-starter-captcha-behavior | 验证码模块:行为验证码 | AJ-Captcha:1.3.0 | +| continew-starter-cache-redisson | 缓存模块:Redisson 自动配置 | Redisson:3.25.2 | +| continew-starter-data-mybatis-plus | 数据访问模块:MyBatis Plus 自动配置 | MyBatis Plus:3.5.5
dynamic-datasource-spring-boot-starter:4.2.0
P6Spy:3.9.1 | +| continew-starter-auth-satoken | 认证模块:SaToken 自动配置 | Sa-Token:1.37.0 | +| continew-starter-auth-justauth | 认证模块:JustAuth 自动配置 | Just Auth:1.16.6 | +| continew-starter-messaging-mail | 消息模块:邮件 | Jakarta Mail:1.1.0 | +| continew-starter-messaging-sms | 消息模块:短信 | SMS4J:3.0.4 | | continew-starter-extension-crud | 扩展模块:BaseController 自定义 CRUD API 封装 | | ## 贡献代码 diff --git a/continew-starter-core/pom.xml b/continew-starter-core/pom.xml index bd7f9f31..73bbd303 100644 --- a/continew-starter-core/pom.xml +++ b/continew-starter-core/pom.xml @@ -58,11 +58,5 @@ cn.hutool hutool-db - - - - org.springframework.security - spring-security-crypto - \ No newline at end of file diff --git a/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index 3aa91b9d..c64a3c92 100644 --- a/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/continew-starter-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,4 +1,3 @@ top.charles7c.continew.starter.core.autoconfigure.project.ProjectAutoConfiguration top.charles7c.continew.starter.core.autoconfigure.threadpool.ThreadPoolAutoConfiguration -top.charles7c.continew.starter.core.autoconfigure.threadpool.AsyncAutoConfiguration -top.charles7c.continew.starter.core.autoconfigure.password.PasswordEncoderAutoConfiguration \ No newline at end of file +top.charles7c.continew.starter.core.autoconfigure.threadpool.AsyncAutoConfiguration \ No newline at end of file diff --git a/continew-starter-dependencies/pom.xml b/continew-starter-dependencies/pom.xml index 0da67d5b..a1426fb8 100644 --- a/continew-starter-dependencies/pom.xml +++ b/continew-starter-dependencies/pom.xml @@ -375,6 +375,20 @@ ${revision} + + + top.charles7c.continew + continew-starter-web + ${revision} + + + + + top.charles7c.continew + continew-starter-security-password + ${revision} + + top.charles7c.continew @@ -389,13 +403,6 @@ ${revision} - - - top.charles7c.continew - continew-starter-web - ${revision} - - top.charles7c.continew diff --git a/continew-starter-security/continew-starter-security-password/pom.xml b/continew-starter-security/continew-starter-security-password/pom.xml new file mode 100644 index 00000000..5591cf1c --- /dev/null +++ b/continew-starter-security/continew-starter-security-password/pom.xml @@ -0,0 +1,22 @@ + + + 4.0.0 + + top.charles7c.continew + continew-starter-security + ${revision} + + + continew-starter-security-password + ContiNew Starter 安全模块 - 密码编码器 + + + + + org.springframework.security + spring-security-crypto + + + \ No newline at end of file diff --git a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderAutoConfiguration.java b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderAutoConfiguration.java similarity index 70% rename from continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderAutoConfiguration.java rename to continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderAutoConfiguration.java index 68f5e602..c9c28cae 100644 --- a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderAutoConfiguration.java +++ b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderAutoConfiguration.java @@ -14,9 +14,10 @@ * limitations under the License. */ -package top.charles7c.continew.starter.core.autoconfigure.password; +package top.charles7c.continew.starter.security.password.autoconfigure; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; import jakarta.annotation.PostConstruct; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -47,6 +48,7 @@ import java.util.Map; *

* * @author Jasmine + * @author Charles7c * @since 1.3.0 */ @AutoConfiguration @@ -71,25 +73,15 @@ public class PasswordEncoderAutoConfiguration { public PasswordEncoder passwordEncoder(List passwordEncoderList) { Map encoders = new HashMap<>(); encoders.put("bcrypt", new BCryptPasswordEncoder()); - encoders.put("ldap", new org.springframework.security.crypto.password.LdapShaPasswordEncoder()); - encoders.put("MD4", new org.springframework.security.crypto.password.Md4PasswordEncoder()); - encoders.put("MD5", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("MD5")); - encoders.put("noop", org.springframework.security.crypto.password.NoOpPasswordEncoder.getInstance()); - encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_5()); - encoders.put("pbkdf2@SpringSecurity_v5_8", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8()); - encoders.put("scrypt", SCryptPasswordEncoder.defaultsForSpringSecurity_v4_1()); - encoders.put("scrypt@SpringSecurity_v5_8", SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8()); - encoders.put("SHA-1", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("SHA-1")); - encoders - .put("SHA-256", new org.springframework.security.crypto.password.MessageDigestPasswordEncoder("SHA-256")); - encoders.put("sha256", new org.springframework.security.crypto.password.StandardPasswordEncoder()); - encoders.put("argon2", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_2()); - encoders.put("argon2@SpringSecurity_v5_8", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8()); + encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8()); + encoders.put("scrypt", SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8()); + encoders.put("argon2", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8()); // 添加自定义的密码编解码器 if (CollUtil.isNotEmpty(passwordEncoderList)) { - passwordEncoderList.forEach(passwordEncoder -> encoders.put(passwordEncoder.getClass() - .getSimpleName() - .toLowerCase(), passwordEncoder)); + passwordEncoderList.forEach(passwordEncoder -> { + String simpleName = passwordEncoder.getClass().getSimpleName(); + encoders.put(StrUtil.removeSuffix(simpleName, "PasswordEncoder").toLowerCase(), passwordEncoder); + }); } String encodingId = properties.getEncodingId(); CheckUtils.throwIf(!encoders.containsKey(encodingId), "{} is not found in idToPasswordEncoder.", encodingId); @@ -98,6 +90,6 @@ public class PasswordEncoderAutoConfiguration { @PostConstruct public void postConstruct() { - log.debug("[ContiNew Starter] - Auto Configuration 'PasswordEncoder' completed initialization."); + log.debug("[ContiNew Starter] - Auto Configuration 'Security-PasswordEncoder' completed initialization."); } } diff --git a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderProperties.java b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderProperties.java similarity index 95% rename from continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderProperties.java rename to continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderProperties.java index 27211ecc..930a7fbd 100644 --- a/continew-starter-core/src/main/java/top/charles7c/continew/starter/core/autoconfigure/password/PasswordEncoderProperties.java +++ b/continew-starter-security/continew-starter-security-password/src/main/java/top/charles7c/continew/starter/security/password/autoconfigure/PasswordEncoderProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package top.charles7c.continew.starter.core.autoconfigure.password; +package top.charles7c.continew.starter.security.password.autoconfigure; import org.springframework.boot.context.properties.ConfigurationProperties; import top.charles7c.continew.starter.core.constant.PropertiesConstants; diff --git a/continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..2923ec65 --- /dev/null +++ b/continew-starter-security/continew-starter-security-password/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +top.charles7c.continew.starter.security.password.autoconfigure.PasswordEncoderAutoConfiguration \ No newline at end of file diff --git a/continew-starter-security/pom.xml b/continew-starter-security/pom.xml new file mode 100644 index 00000000..929cd151 --- /dev/null +++ b/continew-starter-security/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + top.charles7c.continew + continew-starter + ${revision} + + + continew-starter-security + pom + ContiNew Starter 安全模块 + + + continew-starter-security-password + + + + + + top.charles7c.continew + continew-starter-core + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index dd0b57a6..f6852511 100644 --- a/pom.xml +++ b/pom.xml @@ -70,6 +70,7 @@ continew-starter-core continew-starter-json continew-starter-api-doc + continew-starter-security continew-starter-web continew-starter-log continew-starter-storage