2.2k star 单点登录框架揭秘!主流SSO太重?SpringBoot轻量级Smart‑SSO轻松接入·分布式·强踢人

嗨,我是小华同学,专注解锁高效工作与前沿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:实现灵活,但是需自行补足踢下线和单退出机制,开发成本高且易出错。

项目地址

https://github.com/a466350665/smart-sso

posted @ 2025-06-13 18:33  小华同学ai  阅读(78)  评论(0)    收藏  举报