JeecgBoot应用Spring Authorization Server

简介: Spring Authorizaiton Server, 简称 sas,是一个授权服务器框架,提供 OAuth2.1 与 Open Connect 1.0 认证规范及其他规范的实现,它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 Identity Provider 和 OAuth2 授权服务器产品提供了一个安全、轻量级和可定制的基础

Spring Authorizaiton Server, 简称 sas,是一个授权服务器框架,提供 OAuth2.1 与 Open Connect 1.0 认证规范及其他规范的实现,它建立在 Spring Security 之上,为构建 OpenID Connect 1.0 Identity Provider 和 OAuth2 授权服务器产品提供了一个安全、轻量级和可定制的基础。



升级必要性

Spring Authorization Server 项目是 Spring 团队对原有的 Spring Security Oauth 模块的升级,同时对 Oauth 协议的实现由 2.0 升级到最新的 2.1 版本,并且现在已经停止了对该模块的维护。另外 Spring 团队基于 Spring Security Oauth 的经验,对大量代码进行了简化,使认证运行效率变得更高,可介入性以及可兼容性比起以前变得更加优秀。

OAuth 2.1 基于 Oauth2 的基础上进行更新,考虑到安全性的问题,移除了 OAuth2 的简化模式、密码模式。由于现在越来越多的硬件设备具备智能化功能,对设备认证也逐渐有了要求,OAuth2.1 本次新增了设备码认证模式,针对于无浏览器类设备进行登录使用。


JEECG 项目介绍

JeecgBoot 是一款基于 BPM 的低代码平台!前后端分离架构 SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT,支持微服务。强大的代码生成器让前后端代码一键生成,实现低代码开发! JeecgBoot 引领新低代码开发模式 OnlineCoding-> 代码生成器 -> 手工 MERGE, 帮助 Java 项目解决 70% 的重复工作,让开发更多关注业务,既能快速提高效率,节省研发成本,同时又不失灵活性!一系列低代码能力:Online 表单、Online 报表、Online 图表、仪表盘 / 门户设计、表单设计、流程设计、报表设计、大屏设计 等等...

JEECG 开源项目于 2012 年底发布首版本,到 2013 年 CSDN/ITEYE 专家访谈为大家所认知,从开始的谷歌 CODE 开源到现在的 Github,吸引了一大批粉丝!截止目前已近十个春秋,目前 Github 的 Star 近 4 万、论坛会员达 2 万多、QQ 千人群超 40 个。 JEECG BOOT 目前在 Github 中文 JAVA 项目排名第三位、Github 全球 JAVA 项目排名第 19 位、Github 上 JAVA 开发框架项目排名第一。


JeecgBoot 登录认证

JeecgBoot 目前有四种登录情况:

  1. PC 端用户名密码登录(APP 登录)
  2. 手机号登录
  3. 三方社交平台登录(Github、钉钉、微信、企业微信)
  4. CAS 登录

目前这四种登录情况的核心都是使用的自建 JWT token,使用 shiro 框架完成的登录验证及请求授权验证,由 JeecgBoot 本身完全请求用户的密码验证、验证码验证等等,两个部分可以看作是完全分离的。如同冰箱的功能是冷藏 + 冷冻,而我们需要保证放进冰箱的食品有效期。


JeecgBoot 如何切换

在前文我们讲到 JeecgBoot 的用户验证与授权验证是分离式的,所以我们本次切换的注意力只需要放在替换现在的 shiro,使用 Spring Authorization Server 进行登录验证及请求授权验证。

Spring Authoriztion Server 默认支持授权码模式、客户端模式、设备码模式及刷新码模式,并且提供了对应的接口,同时也支持自定义扩展。我们可以对 AuthenticationProvider 接口进行实现,具体实现逻辑可根据自身需求而定,最终只需要返回一个 OAuth2AccessTokenAuthenticationToken 对象即可。JeecgBoot 本次参考了 Shiro 原有的逻辑进行实现,只不过本次调整了手动生成 Token 转成由 Spring Authorization Server 生成 Token,同时使用 Spring Authorization Server 对 redis 的集成,对生成的认证信息保存至 redis 中,JeecgBoot 刚好可以利用这点,完成对在线用户强制退出功能的继承。

切换之前的逻辑路线为:

  1. 用户请求登录
  2. JeecgBoot 完成用户密码、验证码等认证
  3. 使用用户名密码手动生成 JWT token
  4. 用户携带 token 进行请求时,由 shiro 对 token 进行拦截获取其中的用户名,对用户进行 token 校验及权限校验

切换之后的逻辑路线为:

  1. 用户请求登录
  2. JeecgBoot 完成用户密码、验证码等认证。
  3. 使用用户名访问基于 Spring Authorization Server 扩展的认证模式进行 token 生成,并保存至 redis 中。
  4. 用户携带 token 进行请求时,Spring Authorization Server 对 token 进行拦截获取其中的用户名,对用户进行 token 校验及权限校验。



JeecgBoot 切换的原因

Jeecg 考虑到 JeecgBoot 的用户群体越来越庞大,甚至部分用户对编码几乎都不了解,JeecgBoot 需要降低使用的便利性、安全性、扩展性。而 Shiro 相对来说,功能太过单薄,扩展性不足,无法与 JeecgBoot 本身融为一体。本次 Spring Authorization Server 的加入,可以使认证逻辑与 JeecgBoot 融为一体,并且自动满足了对通用性认证、跨平台性、多平台性认证协议完成了集成,让 JeecgBoot 在认证安全领域得到了补齐,更加深层次的保障了普通用户对访问安全功能的需要。

目录
相关文章
|
1月前
|
安全 Java 网络安全
当网络安全成为数字生活的守护者:Spring Security,为您的应用筑起坚不可摧的防线
【9月更文挑战第2天】在数字化时代,网络安全至关重要。本文通过在线银行应用案例,详细介绍了Spring Security这一Java核心安全框架的核心功能及其配置方法。从身份验证、授权控制到防御常见攻击,Spring Security提供了全面的解决方案,确保应用安全。通过示例代码展示了如何配置`WebSecurityConfigurerAdapter`及`HttpSecurity`,帮助开发者有效保护应用免受安全威胁。
56 4
|
2月前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
58 0
|
2天前
|
Java Maven Docker
gitlab-ci 集成 k3s 部署spring boot 应用
gitlab-ci 集成 k3s 部署spring boot 应用
|
14天前
|
Java 对象存储 开发者
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
故障隔离与容错处理:Hystrix在Spring Cloud和Netflix OSS中的应用
36 3
|
20天前
|
Kubernetes Cloud Native Java
当 Quarkus 遇上 Spring Boot,谁才是现代云原生应用的终极之选?究竟哪款能助你的应用傲视群雄?
Quarkus 和 Spring Boot 均为构建现代云原生应用的热门框架,旨在简化开发流程并提升性能。Spring Boot 依托庞大的 Spring 生态系统,提供开箱即用的体验,适合快速搭建应用。Quarkus 由红帽发起,专为 GraalVM 和 HotSpot 设计,强调性能优化和资源消耗最小化,是云原生环境的理想选择。
17 3
|
1月前
|
IDE Java 开发工具
还在为繁琐的配置头疼吗?一文教你如何用 Spring Boot 快速启动,让开发效率飙升,从此告别加班——打造你的首个轻量级应用!
【9月更文挑战第2天】Spring Boot 是一款基于 Spring 框架的简化开发工具包,采用“约定优于配置”的原则,帮助开发者快速创建独立的生产级应用程序。本文将指导您完成首个 Spring Boot 项目的搭建过程,包括环境配置、项目初始化、添加依赖、编写控制器及运行应用。首先需确保 JDK 版本不低于 8,并安装支持 Spring Boot 的现代 IDE,如 IntelliJ IDEA 或 Eclipse。
92 5
|
2月前
|
算法 Java UED
你的Spring Boot应用是否足够健壮?揭秘限流功能的实现秘诀
【8月更文挑战第29天】限流是保障服务稳定性的关键策略,通过限制单位时间内的请求数量防止服务过载。本文基于理论介绍,结合Spring Boot应用实例,展示了使用`@RateLimiter`注解和集成`Resilience4j`库实现限流的方法。无论采用哪种方式,都能有效控制请求速率,增强应用的健壮性和用户体验。通过这些示例,读者可以灵活选择适合自身需求的限流方案。
57 2
|
2月前
|
Prometheus 监控 Cloud Native
Spring Boot 性能护航!Prometheus、Grafana、ELK 组合拳,点燃数字化时代应用稳定之火
【8月更文挑战第29天】在现代软件开发中,保证应用性能与稳定至关重要。Spring Boot 作为流行的 Java 框架,结合 Prometheus、Grafana 和 ELK 可显著提升监控与分析能力。Prometheus 负责收集时间序列数据,Grafana 将数据可视化,而 ELK (Elasticsearch、Logstash、Kibana)则管理并分析应用日志。通过具体实例演示了如何在 Spring Boot 应用中集成这些工具:配置 Prometheus 获取度量信息、Grafana 显示结果及 ELK 分析日志,从而帮助开发者快速定位问题,确保应用稳定高效运行。
54 1
|
2月前
|
Java Spring 监控
Spring Boot Actuator:守护你的应用心跳,让监控变得触手可及!
【8月更文挑战第31天】Spring Boot Actuator 是 Spring Boot 框架的核心模块之一,提供了生产就绪的特性,用于监控和管理 Spring Boot 应用程序。通过 Actuator,开发者可以轻松访问应用内部状态、执行健康检查、收集度量指标等。启用 Actuator 需在 `pom.xml` 中添加 `spring-boot-starter-actuator` 依赖,并通过配置文件调整端点暴露和安全性。Actuator 还支持与外部监控工具(如 Prometheus)集成,实现全面的应用性能监控。正确配置 Actuator 可显著提升应用的稳定性和安全性。
65 0
|
2月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
39 0