嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先行业一步。👉免费订阅,与10万+技术人共享升级秘籍!
Smart‑SSO 依托当下备受青睐的 SpringBoot 技术,以 OAuth2 认证结合 RBAC 权限设计为基础,为您塑造一个轻量级、高可用的单点认证授权中心
引入痛点场景
许多企业级应用在面对复杂流程时会遇到如下问题:
- 跨域认证难题:多个应用分域部署,Cookie 无法共享,用户频繁登录体验差。
- 单点退出复杂:退出一个系统,其他系统仍然保持登录状态,体验不一致。
- 踢人下线不安全:管理员无法实时终止指定用户会话。
- 令牌过期引发中断:access token 一过期,服务请求失败,用户不知所措。
- 按钮级权限需求迫切:不只是页面访问,操作按钮也需细粒度控制。
- 分布式部署与高可用:多实例部署时,Token 无共享机制引发一致性问题。
核心功能亮点
轻量级 OAuth2 授权码实现
- 基于 SpringBoot 和 OAuth2 授权码标准流程,简洁、开箱即用。
- 得益于 starter 模块,即刻启动 SSO 中心与客户端集成。
单点退出机制
- 客户端获取 Token 时传入注销地址;服务器端登出推送各客户端,实现统一退出。
自动续签(Silent Refresh)
- 客户端后端自动监听 accessToken 过期,调用 refreshToken 接口平滑续签,增强用户体验。
强制踢人下线
- 管理员可实时吊销某用户登录凭证;SSO 中心通知所有客户端立即失效该用户 sessions。
跨域支持 & 前后端分离
- 支持多域名部署,无 Cookie 模式下也可灵活实施认证和登出机制。
按钮级权限控制
- 权限模型可区分菜单级和按钮级,通过 URI + HTTP 方法精准控制接口访问。
分布式部署及 Redis 支持
- Token 存储可接 Redis 集群,支持多实例部署,解决空状态、负载问题。
技术架构图与优势
整体架构图
单点登录原理
单点退出原理
项目结构
smart-sso
├── smart-sso-demo -- 客户端示例
├── smart-sso-demo-h5 -- 前后端分离客户端示例
├── smart-sso-server -- 单点登录权限管理服务端
├── smart-sso-starter -- 依赖装配模块
│ ├── smart-sso-starter-base -- 公用的基础常量、工具、凭证清理机制
│ ├── smart-sso-starter-client -- 客户端依赖包,客户端Token生命周期管理
│ ├── smart-sso-starter-client-redis -- 客户端依赖装配,分布式部署场景redis支持
│ ├── smart-sso-starter-server -- 服务端依赖包,服务端凭证生命周期管理
│ ├── smart-sso-starter-server-redis -- 服务端依赖装配,分布式部署场景redis支持
技术优势整理
维度 | 优势 |
认证机制 | OAuth2 授权码规范 + RBAC,安全合规 |
Token 管理 | Access+Refresh 双机制,自动续签+踢人控制 |
分布式能力 | Redis 支持,多节点无状态扩展 |
易用性 | SpringBoot starter 快速集成 |
权限粒度 | 菜单级 + 按钮级控制,接口防护更精准 |
跨域支持 | 支持无 Cookie 架构下的 SPA 应用认证 |
界面效果展示
单点登录页
用户输入账号密码后重定向至客户端,体验无缝流畅。
客户端登录成功页
成功获取 Token 后显示欢迎界面,并可访问更多功能。
SSO 管控后台
展示当前在线用户、Token 列表、刷新历史记录界面。
单点退出与踢人功能
一键下线,实时通知所有客户端,即刻生效。
应用场景举例
- 微服务架构中心认证:多个子系统共享认证中心。
- 前后端分离 SPA:Vue/React 应用中轻松使用。
- B2B 平台权限精细化控制:按钮级区分管理员与普通用户操作权限。
- 高并发分布式系统:多实例部署,Redis 做缓存和会话同步。
- 安全敏感系统:支持单点退出、踢人、Refresh 逻辑,保障资产安全。
同类项目对比分析
项目 | 授权协议 | 单点退出 | 自动续签 | 按钮权限 | 分布式 | 入门便利 |
Smart‑SSO | OAuth2 授权码 | ✅推送登出通知 | ✅Refresh 支持 | ✅URI+方法 | ✅Redis | ✅starter 模块 |
Keycloak | OAuth2 + OpenID | ✅SPM 内建 | ✅Refresh 支持 | ✅稍微复杂 | ✅集群 | ❌较重,需管理 |
CAS | Proprietary | ✅Logout | ❌无内置续签 | ❌需扩展 | ✅集群 | ❌非 OAuth2 标准 |
自研 JWT | JWT | ❌难实现 | ✅JWT exp自动 | ❌无控制机制 | ✅分布式 | ✅轻便 |
Smart‑SSO 在 OAuth2 标准实现 + 运维轻量 + 按钮粒度权限 + 分布式 + 自动续签 等维度综合表现突出,适合中小团队快速建设高可用 SSO 中间件平台。
常见实施步骤与代码示例
1. 快速启动服务端
@SpringBootApplication
public class SmartSsoServerApplication {
public static void main(String[] args) {
SpringApplication.run(SmartSsoServerApplication.class, args);
}
}
在 application.yml
中配置数据库、Redis、端口等:
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/smart_sso
username: root
password: root
redis:
host: localhost
port: 6379
2. 客户端接入示例
添加 starter 依赖:
<dependency>
<groupId>com.smart.sso</groupId>
<artifactId>smart-sso-starter-client</artifactId>
<version>最新版</version>
</dependency>
application.yml
配置:
smart:
sso:
server-url: http://sso.example.com:8080
client-id: demo-client
client-secret: xxxxx
logout-url: http://demo-app/logout/callback
3. 功能测试流程
graph TB
User --> App[客户端]
App --> SSO[认证中心]
SSO --> App
App --> SSO{accessToken expires?}
SSO --> App via refreshToken
项目总结
- ⭐ 轻量化、标准实现,SpringBoot + OAuth2 + RBAC。
- 🛡️ 安全性格外突出:单点退出、踢人下线能力。
- 🔄 使用体验丝滑:自动续签完美平滑过期交互。
- 🌍 架构应用广泛:跨域、前后端分离、分布式集群。
- 🎯 精细权限控制:按钮级权限保障接口安全。
Smart‑SSO 几乎集齐 SSO 中核心高频需求,是中小团队构建认证中台的得力助手。
同类项目简介
- Keycloak:JBoss 提供的全功能身份认证中台,支持 OAuth2、OpenID、LDAP、Kerberos、多组织,但体积较大、上手略复杂。
- CAS:老牌 SSO 工具,支持单点退出,但非 OAuth2 标准,按钮权限需开发者自拓展。
- 自定义 JWT+OAuth:实现灵活,但是需自行补足踢下线和单退出机制,开发成本高且易出错。