Dante Cloud 2.7.7.5 发布,上新融合WebSocket的独立消息应用服务


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

平台定位

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

[1]、为什么更名为 Dante Cloud

Dante Cloud (但丁), 原项目名称 Eurynome Cloud,很多朋友都反映名字太长、读起来拗口、不容易记等问题。因此在加入 Dromara 开源社区之际,将名字进行了变更。

Dante,即但丁·阿利基耶里(公元1265年-公元1321年),13世纪末意大利诗人,现代意大利语的奠基者,欧洲文艺复兴时代的开拓人物之一,以长诗《神曲》(原名《喜剧》)而闻名,后来一位作家叫薄伽丘将其命名为神圣的喜剧。

他被认为是中古时期意大利文艺复兴中最伟大的诗人,也是西方最杰出的诗人之一,最伟大的作家之一。恩格斯评价说:“封建的中世纪的终结和现代资本主义纪元的开端,是以一位大人物为标志的,这位人物就是意大利人但丁,他是中世纪的最后一位诗人,同时又是新时代的最初一位诗人”

更名为 Dante Cloud,寓意本项目会像恩格斯对但丁的评价一样,在行业变革的时期,可以成为一款承上启下,助力企业信息化建设变革的产品。

[2]、版本说明

自11月24日,Spring Boot 3.0 以及 Spring Cloud 2022.0.0、Spring Cloud Tencent 1.8.2 等全新版本发布,整个Java 社区也步入的 Java 17 和 Spring Boot 3 的新时代。紧跟 Java 技术和 Spring 社区的发展,让更多质量更好、性能更优的新特性服务于实际的开发工作,Dante Cloud 也同步进行升级及适配,开发了全新的 3.0 版本。关注请移步 3.0 分支

[3]、本次更新内容

  • 【主要更新】
    1. 新增融合 Stomp WebSocket、私信、公告等功能的独立消息服务:
      • 融合 Stomp WebSocket、私信、公告等功能的独立消息服务,支持前端与后端采用 WebSocket 和 REST 接口互发消息。
      • 新增私信、公告发送,及新消息提醒、基于私信对话浏览信息功能
      • WebSocket 模块,支持 WebSocket Token 鉴权及登录用户信息解析功能,Token 失效或不正确则自动断开连接。
      • 新增实时在线用户统计及同步实时刷新功能
    2. 核心组件库大量模块重构:
      • Spring Authorization Server OAuth2 相关代码分包和模块结构,逻辑更内聚、职责更清晰、模块引用依赖更简洁
      • 删除原 engine-protect 模块及其子模块,将其合并至 engine-rest 模块下。
      • 删除原 engine-websocket 模块与 engine-message 模块整合形成统一的消息应用核心包。
      • 重构基于 Redis 的 Session 共享配置代码,采用更合理的配置实现分布式微服务 Session 共享,同时支持 WebSocket Session 集成。
    3. 前端工程版本重大变化:
      • 前端工程默认包管理器变更为 pnpm。
      • 采用 `monorepo` 模式对前端工程进行重构,抽取 utils、components、apis、bpmn-designer 等相关代码,形成共享模块
      • 共享模块已进行优化配置,利用 Vite 可编译成独立的组件,单独以组件形式进行发布
      • 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,提升开发模式服务器编译速度,便于后续功能的扩展和代码的复用。
  • 其它更新
    • [新增] 新增手工解析 Token 信息机制,同时支持 JWT Token 和 Opaque Token。
    • [新增] 在 JWT Token、Opaque Token 和 IdToken 新增用户信息扩展字段,以方便前端直接使用,减少与后端的交互。
    • [修复] 优化微服务分布式 Session 共享配置,解决共享 Session 不一致问题。
    • [修复] Spring Authorization Server 授权码模式下,WebSocket 获取的 Principal 类型无法解析问题。
    • [修复] Antisamy XSS 校验结果包含换行符,导致 WebSocket 连接异常问题。
    • [修复] 修复 WebSocket 握手阶段获取 Session 异常抛出 NullPointException 问题。
    • [修复] 修复 XSS Request 包装器 Parameter 方法错误,导致无法获取参数错误
    • [新增] 前端采用新版 Stomp JS 实现 WebSocket 支持。
    • [新增] 新增实时在线用户统计及同步实时刷新功能
    • [新增] 前端新增基于用户 ID,动态生成默认 Avatar 功能。
    • [新增] 前端新增独立个人设置页面,包含私信、公告查阅功能
  • 【依赖更新】
    • [升级] maven-embedder 版本升级至 3.8.7
    • [升级] maven-compat 版本升级至 3.8.7
    • [升级] redisson 版本升级至 3.19.1
    • [升级] minio 版本升级至 3.5.1
    • [升级] fastjson2 版本升级至 2.0.23
    • [升级] wxjava 版本升级至 4.4.8.B
    • [升级] tencentcloud-sdk-java 版本升级至 3.1.678
    • [升级] alipay-sdk-java 版本升级至 4.35.32.ALL
  • 友情提示
    • 最新版本前端工程同时支持 Dante Cloud 2.7.X 和 3.0.X 微服务后端工程。原有前端工程将不再继续维护,相关代码将迁移至 Dante Cloud UI 2.7.0 分支。

[4]、Dante Cloud 2.7.X 特点

一、前端

  1. 未使用任何流行开源模版,使用全新技术栈,完全纯"手写"全新前端工程。
  2. 借鉴参考流行开源版本的使用和设计,新版前端界面风格和操作习惯尽量与当前流行方式统一。
  3. 充份使用 Typescript 语言特性,解决大量类型校验问题,尽可能规避 "any" 式的 Typescript 编程语言使用方式。
  4. 充份使用 Composition Api 和 Hooks 等 Vue3 框架新版特性进行代码编写。
  5. 充份利用 Component、Hooks 以及 Typescript 面向对象等特性,抽取通用组件和代码,尽可能降低工程重复代码。
  6. 对较多 Quasar 基础组件和应用功能组件进行封装,以方便代码的统一修改维护和开发使用。
  7. 对生产模式下,对基于 Vite3 的工程打包进行深度性能优化。
  8. 提供以 docker-compose 方式,对工程生产代码进行容器化打包和部署。
  9. 支持密码模式、授权码模式、手机短信模式、第三方社会化等多种登录模式。

二、后端

基于 Spring Authorization Server 深度定制和扩展:

  • 基于 Spring Authorization ServerSpring Data JPA 实现多租户系统架构, 支持 Database 和 Schema 两种模式。

  • 基于 Spring Data JPA,重新构建 Spring Authorization Server 基础数据存储代码,替代原有 JDBC 数据访问方式,破除 Spring Authorization Server 原有数据存储局限,扩展为更符合实际应用的方式和设计。

  • 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义 Resource Ownership Password (密码)认证模式,以兼容现有基于 OAuth 2 规范的、前后端分离的应用,支持 Refresh Token 的使用。

  • 基于 Spring Authorization Server,在 OAuth 2.1 规范基础之上,增加自定义 Social Credentials (社会化登录)认证模式,支持手机短信验证码、微信小程序、基于JustAuth的第三方应用登录, 支持 Refresh Token 的使用。

  • 扩展 Spring Authorization Server 默认的 Client Credentials 模式,实现 Client Credentials 模式支持 Refresh Token 的使用。

  • 扩展 Spring Authorization Server 默认的 Client Credentials 模式,实现真正的使用 Scope 权限对接口进行验证。 增加客户端 Scope 的权限配置功能,并与已有的用户权限体系解耦

  • 支持 Spring Authorization Server Authorization Code PKCE 认证模式

  • 支持 Spring Authorization Server 的标准的 JWT Token 加密校验方式外,新增基于自定义证书的 JWT Token 加密校验方式,可通过配置动态修改。

  • 支持 Opaque Token (不透明令牌) 格式及校验方式,将低 JWT Token 被捕获解析的风险。可通过修改配置参数,设置默认Token 格式是采用 Opaque Token 格式还是 JWT Token 格式。

  • 全面支持 OpenID Connect (OIDC) 协议, 系统使用时可根据使用需求,通过前端开关配置,快速切换 OIDC 模式和传统 OAuth2 模式

  • 深度扩展 Authorization CodeResource Ownership PasswordSocial Credentials 几种模式,全面融合 IdToken、Opaque Token、JWT Token 与现有权限体系,同时提供 IdToken 和 自定义Token 扩展两种无须二次请求的用户信息传递方式,减少用户信息的频繁请求。

  • 自定义 Spring Authorization Server 授权码模式登录认证页面和授权确认页面,授权码模式登录采用数据加密传输。支持多种验证码类型,暂不支持行为验证码。

  • 基于 JetCache 的多级缓存支持,实现自定义 Spring Data JPA 二级缓存,有效解决 Spring Cache 查询缓存更新问题。
  • 全面整合 @PreAuthorize 注解权限与 URL 权限,通过后端动态配置,无须在代码中配置 Spring Security 权限注解以及权限方法,即可实现接口鉴权以及权限的动态修改。采用分布式鉴权方案,规避 Gateway 统一鉴权的压力以及重复鉴权问题
  • 采用分布式服务独立鉴权方案,Spring Security @PreAuthorize 的权限注解、权限方法以及 URL 权限,通过后端动态配置后,实时动态分发至对应服务。
  • OAuth2 UserDetails 核心数据支持直连数据库获取和 Feign 远程调用两种模式。OAuth2 直连数据库模式性能更优,Feign 访问远程调用可扩展性更强。可通过配置动态修改采用策略方式。
  • 基于自定义 Session,混合国密 SM2(非对称) 和 SM4(对称加密) 算法,实现秘钥动态生成加密传输。利用“一人一码机制”,实现密码模式登录数据进行动态加密传输。配合 OAuth2 Client 验证,保护接口调用和前后端数据传输的合理性及安全性。

[5]、界面预览

Dromara 开源社区

一、社区愿景

让每一位开源爱好者,体会到开源的快乐。

二、社区官网

https://dromara.org 是 Dromara 开源社区官方网站。

三、成员项目

 


相關推薦

2024-08-23

修改配置实现两种方式的切换。 基于 RSocket 全面重写 WebSocket 消息系统,实现 WebSocket 的 响应式 改造以及 RSocket 与 Spring Security 体系的全面集成。支持多实例、跨服务的私信和广播 新增 OAuth2 独立客户端,可用于客户端动态

2024-07-03

va。获取手机号码API修改为使用 code 方式。 [重构] 重构 WebSocket 以及 RSocket 模块,提取在线用户统计共用定义,减少代码重复 [重构] RSocket Integration 定义及配置代码合并至 message-autoconfigure 模块中,提升代码可插拔性 [重构] M

2024-07-22

udience-annotations 相关告警问题 [修复] 修复兼容 RSocket 和 WebSocket 的统一用户信息鉴定器类型校验错误,导致 Servlet WebSocket 环境下抛出转型错误问题。 [修复] 修复 Servlet WebSocket 模式下实时在线用户统计接口提示404问题。 [重

2023-10-30

息发送融合门面设计,以统一 API 支持系统集成的、包含 WebSocket、Application Event、Spring Cloud Stream、消息队列等各类消息的发送。解决给类消息组件发送方式、发送入口不一致、代码混杂、使用不方便等问题。fix: #I8BQZR [新增] 新

2023-11-12

Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有。 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封

2024-01-18

Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有。 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封

2024-04-10

Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有。 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封

2023-09-09

[1] 本次更新内容 【主要更新】 [重构] 重构 WebSocket 相关模块,规范化配置代码,融合 Spring Session,支持多实例 WebSocket 用户信息共享。 【其它更新】 [修复] 修复前端工程某个参数名称写入错误导致登录页面

2024-03-14

Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有。 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封

2024-04-26

Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有。 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封

2024-02-22

Session 共享,实现 Spring Authorization Server、多实例服务、WebSocket、自定义 Session 以及大前端 Session 的统一。微服务架构下的 Session 可以选择不用,但是不能没有。 混合国密 SM2 (非对称) 和 SM4 (对称加密) 算法,实现基于数字信封

2022-10-08

行优化配置,可编译成独立的组件,单独以组件形式进行发布。 代码以共享模块的方式进行单独维护开发,降低现有工程代码复杂度,便于后续功能的扩展和代码的复用。 [重构] 重构现有前端工程 TabView 相关代码和实现逻

2023-01-21

netty.util.internal.OutOfDirectMemoryError 问题。 [优化] 将默认 WebSocket 连接地址设置为 permitAll 权限,跳过资源服务器检测,由 WebSocket 模块自主进行权限校验。 [优化] 基于 axios 最新版本 typescript 定义,优化前端 @herodotus/core 模块 axi

2022-08-04

uth2` 版本。 基于 Vue3、Vite2、Vuetify3、Pinia 等新版前端已发布,原有基于 Vue2、Vuetify2、Typescript 开发的前端代码已移至 vue2+vuetify2+typescript 分支   Dromara 开源社区 一、社区愿景 让每一位开源爱好者,体会到开源的快