一、主流认证授权框架清单
Spring Security(官方标配)
Apache Shiro(老牌轻量)
Sa-Token(国产极简爆款)
原生 JWT + 自定义拦截器(自研轻量)
Keycloak(开源 IAM 统一身份认证)
CAS(经典老牌单点登录 SSO)
Spring Cloud OAuth2 + Gateway(微服务标准授权)
JustAuth(专属第三方社交登录)
二、各框架详细拆解
1. Spring Security
核心简介
Spring 官方原生安全框架,SpringBoot / SpringCloud 生态默认标配,企业级最通用的认证授权框架。
主要功能
认证:账号密码、短信验证码、记住我、OAuth2 / 社交登录、LDAP / 域账号对接
授权:RBAC 角色权限、URL 接口权限、方法级权限、数据级权限控制
安全防护:内置 CSRF、XSS、会话固定攻击、密码加密、登录防暴力破解
支持会话管理、跨域配置、分布式会话、微服务网关整合、OIDC 协议
核心特点
深度无缝整合 SpringBoot / SpringCloud
基于过滤器链架构,全链路拦截管控
注解式权限
@PreAuthorize,细粒度权限控制官方持续迭代,紧跟微服务、云原生生态
优点
功能全覆盖,企业级安全能力拉满
Spring 官方维护,社区庞大、文档完善、坑少
完美适配微服务、网关、分布式架构
支持接口、方法、数据多维度权限管控
原生支持 OAuth2.0、OIDC、单点登录
缺点
入门陡峭,底层过滤器链概念复杂
默认配置繁琐,新手容易被默认规则劝退
框架较重,小型项目略显冗余
自定义扩展需理解底层链路,改造成本偏高
应用场景
中大型企业级后台管理系统
SpringCloud 微服务分布式项目
需要细粒度权限、数据权限的复杂业务系统
金融、政务、对安全等级要求高的项目
2. Apache Shiro
核心简介
Apache 开源轻量级安全框架,不依赖 Spring 也可独立运行,传统 Java 项目老牌首选。
主要功能
身份认证、角色资源授权、独立会话管理(不依赖 Web 容器)
密码加密、记住我、缓存集成、粗粒度 RBAC 权限
支持非 Web 项目(桌面程序、定时任务)权限控制
核心特点
四大核心组件:
Subject(用户)、SecurityManager(安全管理器)、Realm(数据源)架构极简、API 通俗易懂、低侵入
可脱离 SpringBoot 独立使用
优点
轻量小巧、依赖少、配置简单
上手极快,代码逻辑直观,学习成本低
独立会话机制,非 Web 项目也能使用
中小型项目开发效率高
缺点
生态老旧,官方大版本迭代停滞
无原生 CSRF/XSS 等安全防护,需手动实现
微服务、分布式适配能力弱
不原生支持 OAuth2.0、单点登录 SSO
方法级细粒度权限弱于 Spring Security
应用场景
中小型单体传统 Web 项目
非 Spring 架构的 Java 项目、桌面应用
权限逻辑简单、追求快速开发的后台系统
老旧项目重构、不想引入过重框架
3. Sa-Token
核心简介
国产开源轻量权限框架,专为 SpringBoot 设计,中文文档、极简配置,近年国内项目爆款。
主要功能
登录认证、角色权限、路由拦截、注解权限
自动 JWT 签发、多终端登录、踢下线、账号封禁
原生支持分布式会话、单点登录 SSO、无状态认证
防重放攻击、定时续约、权限缓存、多账号体系
核心特点
零 XML、极简配置,几行代码即可实现登录鉴权
全中文文档、国内社区活跃、适配国内业务场景
低侵入、开箱即用,同时支持单体 + 微服务
优点
上手门槛极低,5 分钟即可接入认证授权
国产框架,文档、问题排查全中文
功能贴合国内业务:多终端、SSO、分布式会话原生支持
轻量不臃肿,性能优异
扩展灵活,适配前后端分离、微服务架构
缺点
生态成熟度不如 Spring Security,大厂标杆案例偏少
极致封装后,底层自定义深度扩展不如 Security 灵活
高级安全防护(XSS/CSRF)需手动补充配置
应用场景
中小型创业项目、后台管理系统快速开发
个人开发、小团队项目,追求开发效率
单体 / 分布式项目、前后端分离项目
偏爱国产技术栈、不想啃复杂配置的开发团队
4. JWT + 自定义拦截器 / 过滤器
核心简介
不引入任何第三方权限框架,基于 SpringBoot 原生拦截器 + JJWT 工具包,手写认证授权逻辑。
主要功能
基于 JWT 生成 / 解析令牌、无状态登录
自定义接口拦截、登录校验、角色权限判断
完全自主控制令牌过期、刷新、跨域逻辑
核心特点
纯原生开发、无框架绑定、零额外依赖
轻量化、极简架构、完全自主可控
优点
极致轻量,无冗余依赖、性能最高
完全自定义,灵活度拉满,不受框架约束
学习成本低,只需理解 JWT 基础原理
缺点
重复造轮子:登录、鉴权、异常处理、令牌刷新全部手写
无现成 RBAC 封装,角色权限需自己编码实现
缺少安全防护,CSRF、防暴力破解、重放攻击需手动实现
分布式、SSO 支持需要自行开发
应用场景
个人项目、小型 Demo、极简后台系统
权限逻辑极其简单,不想引入第三方框架
学习原理、需要完全掌控鉴权逻辑的场景
5. Keycloak
核心简介
开源 IAM 身份认证与访问管理平台,基于 OAuth2.0、OIDC、SAML 标准协议,独立部署的统一认证中心。
主要功能
统一身份认证、跨系统单点登录 SSO
用户 / 角色 / 分组管理、多租户隔离
对接 LDAP、企业微信、钉钉、社交登录
微服务集群统一鉴权、权限托管
核心特点
与业务系统完全解耦,独立部署认证服务
可视化后台管理,无需编码即可配置账号权限
标准协议适配,支持 Java/PHP/Go 等所有语言接入
优点
企业级身份中台能力,多系统统一登录首选
协议标准化,跨语言、跨平台适配
内置用户管理、多租户、权限分组能力强
微服务、SaaS 系统落地成熟
缺点
重量级组件,部署复杂、有运维成本
学习曲线陡峭,配置繁琐
小型项目引入过度冗余
深度定制化需要二次开发
应用场景
大型集团多系统统一单点登录
微服务集群、企业身份认证中台
多租户 SaaS 平台、政务大型平台
需要对接 LDAP、企业微信、钉钉统一登录
6. CAS
核心简介
Central Authentication Service,经典老牌开源单点登录框架,传统企业、政府国企老项目标配。
主要功能
基于票据 (Ticket) 机制实现跨域 SSO 单点登录
统一账号认证、对接数据库 / LDAP
传统 Java Web 系统跨应用登录
优点
极度稳定、技术成熟,行业沉淀多年
开源免费,老旧项目兼容性极好
缺点
技术老旧、架构笨重,社区迭代缓慢
适配前后端分离、微服务能力极差
配置繁琐,现代化项目极少选用
应用场景
政府、国企老旧遗留项目 SSO 改造
传统 Java Web 集群项目,无微服务改造计划
7. Spring Cloud OAuth2 + Spring Cloud Gateway
核心简介
Spring 官方基于 OAuth2.0 协议的微服务专属授权方案,结合网关实现统一鉴权。
主要功能
支持 OAuth2 四大授权模式:授权码、密码、客户端、简化模式
网关层统一拦截认证,业务服务无感鉴权
JWT 令牌、分布式授权、第三方应用接入授权
优点
SpringCloud 微服务官方标准方案
网关统一管控,鉴权逻辑下沉到网关,业务解耦
协议规范、安全可靠,适合大型互联网平台
缺点
配置极其复杂,版本兼容问题多
学习成本极高,小项目完全没必要
应用场景
大型互联网微服务分布式系统
需要对外开放 API、第三方应用授权接入
电商、支付、大型平台级项目
8. JustAuth
核心简介
专为第三方社交登录打造的开源框架,一键集成国内外几十种登录渠道。
主要功能
封装微信、QQ、微博、GitHub、钉钉、企业微信、支付宝等第三方登录
统一 API 获取第三方用户信息、账号绑定
优点
极简集成,无需对接每个平台原生 SDK
支持近 30 种登录渠道,开箱即用
缺点
只做社交登录,无本地 RBAC 权限控制
必须搭配 Spring Security/Shiro/Sa-Token 使用
应用场景
所有需要微信 / 钉钉 / GitHub 等第三方快捷登录的项目
作为辅助框架,搭配其他认证框架使用
三、框架选型对比表
四、选型落地建议
微服务、企业复杂权限、高安全要求 → 首选 Spring Security
中小型单体、快速开发、不想复杂配置 → 首选 Sa-Token
传统老项目、非 Spring 架构 → 选 Shiro
个人小项目、极简需求 → 自研 JWT + 拦截器
多系统统一登录、身份中台、SaaS → Keycloak
需要微信 / 钉钉第三方登录 → JustAuth 搭配任意框架
老旧政府国企 SSO 遗留系统 → CAS