旧的 Spring Security OAuth 已停止维护,全面拥抱最新解决方案
以下全文 Spring Authorization Server 简称为: SAS 。本文以 PIG 微服务[1]为演示,适用于 Spring Security OAuth 2.3 <-> 2.5 的认证中心迁移,目标经过改造满足生产业务场景。
背景
Spring 团队正式宣布 Spring Security OAuth 停止维护,该项目将不会再进行任何的迭代
目前 Spring 生态中的 OAuth2 授权服务器是 Spring Authorization Server 已经可以正式生产使用
作为 SpringBoot 3.0 的过渡版本 SpringBoot 2.7.0 过期了大量关于 SpringSecurity 的配置类,如沿用旧版本过期配置无法向上升级。
迁移过程
① Java 1.8 支持
目前最新的 SAS 0.3 基于 Java 11 构建,低版本 Java 无法使用
经过和 Spring Security 官方团队的沟通 0.3.1 将继续兼容 Java 1.8
我们联合 springboot 中文社区编译了适配 java 1.8 的版本坐标如下
② 授权模式扩展
扩展支持密码模式,SAS 基于 oauth 2.1 协议不支持密码模式
扩展支持短信登录
③ Redis 令牌存储
支持 Redis 存储 令牌
官方目前没有提供基于 Redis 令牌持久化方案
PIG 扩展 PigRedisOAuth2AuthorizationService 支持
④ Token 输出格式化
使用自省令牌的情况下 默认实现为
默认实现
为方便结合 redis 高效检索 token ,结合 RDM 分组也可以更方便的图形化观察
⑤ Token 输出增强
使用自省令牌,默认情况下输出的 Token 格式
Token 增强输出关联用户信息
⑥ 授权码模式个性化
注入自定义 confirm
⑦ 资源服务器
自省方案扩展支持资源资源服务器本地查询
默认的资源服务器自省模式
扩展资源服务器本地自省
扩展资源服务器本地自省
优势: 1. 用户状态实时更新 2. 减少网络调用提升性能
总结
作为 Spring 生态中最重要的一环,当前版本 SAS 已经可以满足生产需求,可以在实际业务中落地使用。
部分细节(异常处理、事件通知) SAS 处理的并不优雅,例如部分异常直接被 catch 吞掉,需要较强的源码调试能力。
参考资料
PIG 微服务:https://github.com/pig-mesh/pig
评论