Eurynome Cloud 2.7.0.10 发布,修复 Fastjson 反序列化代码执行漏洞


Eurynome Cloud 是一款企业级微服务架构和服务能力开发平台。首个全面拥抱 Spring Authorization Server 的版本,基于Spring Boot 2.7.7、Spring Cloud 2021.0.2、Spring Cloud Alibaba 2021.0.1.0、 Spring Authorization Server 0.2.3、Nacos 2.1.0 等最新版本开发,遵循SpringBoot编程思想,高度模块化和可配置化。具备服务发现、配置、熔断、限流、降级、监控、多级缓存、分布式事务、工作流等功能

平台定位

  • 构建成熟的、完善的、全面的,基于 OAuth2 的、前后端分离的微服务架构解决方案。
  • 面向企业级应用和互联网应用设计开发,既兼顾传统项目的微服务化,又满足互联网应用开发建设、快速迭代的使用需求。
  • 平台架构使用微服务领域及周边相关的各类新兴技术或主流技术进行建设,是帮助快速跨越架构技术选型、研究探索阶段的利器。
  • 代码简洁规范、结构合理清晰,是新技术开发应用的典型的、综合性案例,助力开发人员对新兴技术的学习和掌握。

[1]、发布背景

2021年11月8日 Spring 官方已经强烈建议使用 Spring Authorization Server 替换已经过时的 Spring Security OAuth2.0。

在 Spring Security OAuth2 彻底停止维护、Spring Boot 2.7.0 正式发布之时,又恰逢 Eurynome Cloud 开源一周年之际,推出基于 Spring Authorization Server 0.2.3、Spring Boot 2.7.0、Spring Cloud 2021.0.2、Spring Cloud Alibaba 2021.0.1.0 和 Nacos 2.1.0 的全新正式版本。该版本基于 Spring Authorization Server 0.2.3 和 Spring Boot 2.7.0 全新定制开发,细节满满,欢迎品鉴。

[2]、本次更新内容

  • 主要更新
    • Fastjson 版本升级至 1.2.83。消除 Fastjson 反序列化任意代码执行漏洞。
    • 使用 Jackson 全面替换工程中涉及的 Fastjson 代码。保留工程 Fastjson 依赖,用于统一控制其它第三方依赖包中依赖的 Fastjson 版本。
  • 其它更新
    • 合并原有 assistant-sdk-json 包至 assistant-core。新增 Gson 通用工具类。
    • 重构缓存相关模块,将 redis 和 caffeine 模块独立出来。使用标准化方式重新配置 redis,解决早期在 jar 包模式下,自定义 Redis 配置不生效问题
    • 使用 Spring Boot 2.7.0 新的自动配置注册文件,调整部分 starter 自动注入配置文件
    • 增加基于 Redis 的 Spring Cloud Session 共享基础配置。同时支持 Servlet 和 Webflux
    • 去除重复定义的 JPA 实体自定义 KEY Generator 名称
  • 依赖更新
    • Redisson 版本升级 3.17.2
    • Logstash Logback Encoder 版本升级至 7.2
    • WxJava 版本升级至 4.3.4.B
    • MyBatis 版本升级至 3.5.10
    • Tencentcloud-sdk-java 版本升级 3.1.514
    • Qiniu-java-sdk 版本升级至 7.10.3
    • Alipay-sdk-java 版本升级至 4.23.26.ALL
    • com.baidu.aip 版本升级至 4.16.8

【3】、Eurynome Cloud 2.7.X 主要变化

  • 基于 Spring Authorization Server 深度定制:

    • 基于 Spring Data JPA,重新构建 Spring Authorization Server 基础数据存储代码,替代原有 JDBC 数据访问方式,破除 Spring Authorization Server 原有数据存储局限,扩展为更符合实际应用的方式和设计。
    • 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义“密码”认证模式,以兼容现有基于 OAuth 2 规范的、前后端分离的应用。
    • 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义Social Credentials 认证模式,支持手机短信验证码、微信小程序、第三方应用登录。
    • 遵照 Spring Security 5 以及 Spring Authorization Server 的代码规范,进行 OAuth2 认证服务器核心代码的开发,遵照其使用 Jackson 反序列化的方式, 增加大量自定义 Jackson Module。
    • 支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改
    • 支持 OAuth2 OIDC 认证模式,补充前端 OIDC 认证相关配置操作,以及对应的 /userinfo 接口调用支持 和 客户端注册支持
    • 支持 OAuth2 Authorization Code PKCE 认证模式
    • 扩展 Spring Authorization Server 默认的 Client Credentials 模式,实现 Refresh Token 的创建。
    • 扩展 Spring Authorization Server 默认的 Client Credentials 模式,实现真正的使用 Scope 权限对接口进行验证。 增加客户端 Scope 的权限配置功能,并与已有的用户权限体系解耦
    • 自定义 Spring Authorization Server 授权码模式登录认证页面和授权确认页面,授权码模式登录采用数据加密传输。支持多种验证码类型,暂不支持行为验证码。
  • 代码结构的大规模调整和优化:

    • 对原有代码进行了深度的“庖丁解牛”,严格遵照“单一职责”原则,根据各个组件的职责以及用途,将整个工程拆解细化为多个各自独立组件模块,在最大程度上降低代码间的耦合,也更容易聚焦和定位问题。
    • 将通用化组件提取为独立工程,独立编译、按需选用,极大的降低系统主工程代码量。相关组件也已上传至 Maven 中央仓库,降低系统主工程工程代码编译耗时,改进和提升 CICD 效率,
    • 原有主工程代码结构也进行了深化调整,代码分包更加合理,代码逻辑也更加清晰。

【4】、额外说明

  1. 本项目以后将主要维护  Spring Authorization Server  版本,原有基于 Spring Security OAuth2  的版本已经移至 spring-security-oauth2 分支,可以从该分支或发行版页面获取历史版本继续使用。后期会根据 ISSUE 以及使用用户反馈情况,再行决定是否继续维护  Spring Security OAuth2 版本。
  2. 最新版本代码,暂时继续沿用原有基于 Vue2、Vuetify2、Typescript开发的前端系统。基于 Vue3、Vite2、Vuetify3、Pinia 等新版前端正在加进开发中,由于 Vuetify3 版本发布跳票以及部分已有组件的缺失,导致新版前端开发延后。
  3. 原有基于 Vue2、Vuetify2、Typescript 开发的前端,由于使用了过渡性 Typescript IOC 组件,以及依赖组件版本限制等问题,初次接触该项目在编译过程中会出现一些问题,请移步至本项目在线文档,详见“常见问题”章节。

 


相關推薦

2022-05-09

自定义多级缓存 数据库: Postgresql,MySQL,Oracle ... JSON序列化:Jackson & FastJson 文件服务:阿里云OSS/Minio 数据调试:p6spy 日志中心:ELK 日志收集:Logstash Logback Encoder [5]、工程结构 eurynome-cloud ├── configurations -- 配

2022-04-18

自定义多级缓存 数据库: Postgresql,MySQL,Oracle ... JSON序列化:Jackson & FastJson 文件服务:阿里云OSS/Minio 数据调试:p6spy 日志中心:ELK 日志收集:Logstash Logback Encoder [5]、工程结构 eurynome-cloud ├── configurations --

2022-06-22

员归属管理功能中,删除已配置人员归属会出现 Jackson 反序列化问题。 [优化] 优化单位树和部门树,树形数据组织代码,对不同类型的根节点数据,统一处理为系统定义标准根节点,便于前端组件使用和封装。 [优化] 优化社

2022-06-13

修复] 修正因统一 Jackson ObjectMapper 配置,产生时间类型反序列化不正确,导致 Spring Authorization Server 认证相关操作抛错问题。 [优化] 优化 Protect 包内相关 Exception 及配置,将其融入到系统的错误体系中,让返回错误信息更加直

2022-09-23

OAuth2 认证服务器核心代码的开发,遵照其使用 Jackson 反序列化的方式, 增加大量自定义 Jackson Module。 支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改

2022-08-15

出现乱码导致请求内容包含特殊字符被 XSS 拦截而产生反序列化问题。 依赖更新 dysmsapi20170525 版本升级至 2.0.18 tencentcloud-sdk-java-sms 版本升级至 3.1.568 alipay-sdk-java 版本升级至 4.33.1.ALL [4]、Dante Cloud 2.7.X 主要变化

2022-07-19

OAuth2 认证服务器核心代码的开发,遵照其使用 Jackson 反序列化的方式, 增加大量自定义 Jackson Module。 支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改

2022-05-23

OAuth2 认证服务器核心代码的开发,遵照其使用 Jackson 反序列化的方式, 增加大量自定义 Jackson Module。 支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改

2023-04-27

【其它更新】 [漏洞] 修复 Snakeyaml (CVE-2022-1471) 存在反序列化漏洞 和 (CVE-2022-41854) 存在缓冲区溢出漏洞 [新增] 新增服务优雅停机支持 [新增] 新增 MongoDB 基础 Entity、Repository、Service、Controller 和 MybatisPlus 基础 Controller,方便

2023-05-25

查看和定位问题的日志输出 [重构] 采用自定义 Jackson 反序列化器和序列化器方式,简化部分管理功能原有DTO请求参数转换实体的繁琐代码。 [修复] 修复 Access Token Scope 设置不正确导致 OAuth2 Client 使用授权码模式登录出错问题

2022-09-13

OAuth2 认证服务器核心代码的开发,遵照其使用 Jackson 反序列化的方式, 增加大量自定义 Jackson Module。 支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改

2024-02-27

这个版本主要是大幅度提升android版本的首次序列化/反序列化的性能。在序列化大约1M的JSON对象时性能也有了较大提升。 Issues 在非android版本某些Android设备上处理数据时崩溃 #2263 JSONField Annotation defaultValue配置支持Enum&nbs

2022-10-08

OAuth2 认证服务器核心代码的开发,遵照其使用 Jackson 反序列化的方式, 增加大量自定义 Jackson Module。 支持 Spring Authorization Server 的标准的Token加密校验方式外,还了增加支持自定义证书的 Token 加密方式,可通过配置动态修改

2023-04-11

题 #387 #1318 #1256 #1309 修复kotlin某些场景序列化报错的问题 #1266 修复Android兼容问题,Timestamp.valueOf方法在Android下不存在 #1272 提升fastjson 1.x兼容性,支持对List类型反序列化输入single object #1291 #1292