JeecgBoot 应用 Spring Authorization Server
ccwgpt 2024-10-28 15:02 33 浏览 0 评论
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 本次新增了设备码认证模式,针对于无浏览器类设备进行登录使用。
JeecgBoot 登录认证
JeecgBoot 目前有四种登录情况:
- PC 端用户名密码登录(APP 登录)
- 手机号登录
- 三方社交平台登录(Github、钉钉、微信、企业微信)
- 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 刚好可以利用这点,完成对在线用户强制退出功能的继承。
切换之前的逻辑路线为:
- 用户请求登录
- JeecgBoot 完成用户密码、验证码等认证
- 使用用户名密码手动生成 JWT token
- 用户携带 token 进行请求时,由 shiro 对 token 进行拦截获取其中的用户名,对用户进行 token 校验及权限校验
切换之后的逻辑路线为:
- 用户请求登录
- JeecgBoot 完成用户密码、验证码等认证。
- 使用用户名访问基于 Spring Authorization Server 扩展的认证模式进行 token 生成,并保存至 redis 中。
- 用户携带 token 进行请求时,Spring Authorization Server 对 token 进行拦截获取其中的用户名,对用户进行 token 校验及权限校验。
JeecgBoot 切换的原因
Jeecg 考虑到 JeecgBoot 的用户群体越来越庞大,甚至部分用户对编码几乎都不了解,JeecgBoot 需要降低使用的便利性、安全性、扩展性。而 Shiro 相对来说,功能太过单薄,扩展性不足,无法与 JeecgBoot 本身融为一体。本次 Spring Authorization Server 的加入,可以使认证逻辑与 JeecgBoot 融为一体,并且自动满足了对通用性认证、跨平台性、多平台性认证协议完成了集成,让 JeecgBoot 在认证安全领域得到了补齐,更加深层次的保障了普通用户对访问安全功能的需要。
相关推荐
- 用Steam启动Epic游戏会更快吗?(epic怎么用steam启动)
-
Epic商店很香,但也有不少抱怨,其中一条是启动游戏太慢。那么,如果让Steam启动Epic游戏,会不会速度更快?众所周知,Steam可以启动非Steam游戏,方法是在客户端左下方点击“添加游戏”,然...
- Docker看这一篇入门就够了(dockerl)
-
安装DockerLinux:$curl-fsSLhttps://get.docker.com-oget-docker.sh$sudoshget-docker.sh注意:如果安装了旧版...
- AYUI 炫丽PC开发UI框架2016年6月15日对外免费开发使用 [1]
-
2016年6月15日,我AY对外发布AYUI(WPF4.0开发)的UI框架,开发时候,你可以无任何影响的去开发PC电脑上的软件exe程序。AYUI兼容XP操作系统,在Win7/8/8.1/10上都顺利...
- 别再说C#/C++套壳方案多了!Tauri这“借壳生蛋”你可能没看懂!
-
浏览器套壳方案,C#和C++有更多,你说的没错,从数量和历史积淀来看,C#和C++确实有不少方式来套壳浏览器,让Web内容在桌面应用里跑起来。但咱们得把这套壳二字掰扯清楚,因为这里面学问可大了!不同的...
- OneCode 核心概念解析——Page(页面)
-
在接触到OneCode最先接触到的就是,Page页面,在低代码引擎中,页面(Page)设计的灵活性是平衡“快速开发”与“复杂需求适配”的关键。以下从架构设计、组件系统、配置能力等维度,解析确...
- React是最后的前端框架吗,为什么这么说的?
-
油管上有一位叫Theo的博主说,React是终极前端框架,为什么这么说呢?让我们来看看其逻辑:这个标题看起来像假的,对吧?React之后明明有无数新框架诞生,凭什么说它是最后一个?我说的“最后一个”不...
- 面试辅导(二):2025前端面试密码:用3个底层逻辑征服技术官
-
面试官放下简历,手指在桌上敲了三下:"你上次解决的技术难题,现在回头看有什么不足?"眼前的候选人瞬间僵住——这是上周真实发生在蚂蚁金服终面的场景。2025年的前端战场早已不是框架熟练...
- 前端新星崛起!Astro框架能否终结React的霸主地位?
-
引言:当"背着背包的全能选手"遇上"轻装上阵的短跑冠军"如果你是一名前端开发者,2024年的框架之争绝对让你眼花缭乱——一边是React这位"背着全家桶的全能选...
- 基于函数计算的 BFF 架构(基于函数计算的 bff 架构是什么)
-
什么是BFFBFF全称是BackendsForFrontends(服务于前端的后端),起源于2015年SamNewman一篇博客文章《Pattern:BackendsFor...
- 谷歌 Prompt Engineering 白皮书:2025年 AI 提示词工程的 10 个技巧
-
在AI技术飞速发展的当下,如何更高效地与大语言模型(LLM)沟通,以获取更准确、更有价值的输出,成为了一个备受关注的问题。谷歌最新发布的《PromptEngineering》白皮书,为这一问题提供了...
- 光的艺术:灯具创意设计(灯光艺术作品展示)
-
本文转自|艺术与设计微信号|artdesign_org_cn“光”是文明的起源,是思维的开端,同样也是人类睁眼的开始。每个人在出生一刻,便接受了光的照耀和洗礼。远古时候,人们将光奉为神明,用火来...
- MoE模型已成新风口,AI基础设施竞速升级
-
机器之心报道编辑:Panda因为基准测试成绩与实际表现相差较大,近期开源的Llama4系列模型正陷入争议的漩涡之中,但有一点却毫无疑问:MoE(混合专家)定然是未来AI大模型的主流范式之一。...
- Meta Spatial SDK重大改进:重塑Horizon OS应用开发格局
-
由文心大模型生成的文章摘要Meta持续深耕SpatialSDK技术生态,提供开自去年9月正式推出以来,Meta持续深耕其SpatialSDK技术生态,通过一系列重大迭代与功能增强,不断革新H...
- "上云"到底是个啥?用"租房"给你讲明白IaaS/PaaS/SaaS的区别
-
半夜三点被机房报警电话惊醒,顶着黑眼圈排查服务器故障——这是十年前互联网公司运维的日常。而现在,程序员小王正敷着面膜刷剧,因为公司的系统全"搬"到了云上。"部署到云上"...
- php宝塔搭建部署thinkphp机械设备响应式企业网站php源码
-
大家好啊,欢迎来到web测评。本期给大家带来一套php开发的机械设备响应式企业网站php源码,上次是谁要的系统项目啊,帮你找到了,还说不会搭建,让我帮忙录制一期教程,趁着今天有空,简单的录制测试了一下...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 用Steam启动Epic游戏会更快吗?(epic怎么用steam启动)
- Docker看这一篇入门就够了(dockerl)
- AYUI 炫丽PC开发UI框架2016年6月15日对外免费开发使用 [1]
- 别再说C#/C++套壳方案多了!Tauri这“借壳生蛋”你可能没看懂!
- OneCode 核心概念解析——Page(页面)
- React是最后的前端框架吗,为什么这么说的?
- 面试辅导(二):2025前端面试密码:用3个底层逻辑征服技术官
- 前端新星崛起!Astro框架能否终结React的霸主地位?
- 基于函数计算的 BFF 架构(基于函数计算的 bff 架构是什么)
- 谷歌 Prompt Engineering 白皮书:2025年 AI 提示词工程的 10 个技巧
- 标签列表
-
- 框架图 (58)
- flask框架 (53)
- quartz框架 (51)
- abp框架 (47)
- jpa框架 (47)
- springmvc框架 (49)
- 分布式事务框架 (65)
- scrapy框架 (56)
- shiro框架 (61)
- 定时任务框架 (56)
- java日志框架 (61)
- JAVA集合框架 (47)
- mfc框架 (52)
- abb框架断路器 (48)
- ui自动化框架 (47)
- beego框架 (52)
- java框架spring (58)
- grpc框架 (55)
- ppt框架 (48)
- 内联框架 (52)
- cad怎么画框架 (58)
- ps怎么画框架 (47)
- ssm框架实现登录注册 (49)
- oracle字符串长度 (48)
- oracle提交事务 (47)