{"repo":"a466350665/smart-sso","free":true,"listed":false,"github":"https://github.com/a466350665/smart-sso","clone":"git clone https://github.com/a466350665/smart-sso.git","description":"SpringBoot SSO 单点登录 权限认证，OAuth2实现，支持跨域、前后端分离、分布式部署","language":"Java","stars":2304,"topics":["sso","springboot","oauth2","java"],"license":"MIT","category":"auth-billing-email","readme_excerpt":"Smart-SSO QQ交流群：454343484、769134727 简述 Smart-SSO 依托当下备受青睐的 SpringBoot 技术，以 OAuth2 认证结合 RBAC 权限设计为基础，为您塑造一个轻量级、高可用的单点认证授权中心。 功能说明 1. 轻量级： 基于SpringBoot和OAuth2协议的授权码模式极简实现； 2. 单点退出： 客户端应用在获取Token时，隐性把自身的注销地址传递给服务端，在任意客户端应用操作退出，服务端通过远程通知所有客户端应用注销本地Token，完成单点退出； 3. 自动续签： 使用OAuth2协议的accessToken策略，过期由客户端后端自动调用refreshToken刷新接口，并更新服务端凭证存根时效，完成过期自动续签； 4. 踢人下线： 管理员可主动终止指定用户的会话，服务端会立即吊销该用户的登录凭证，并通过回调机制通知所有关联客户端清除本地会话，实现强制下线功能； 5. 跨域支持： 服务端和客户端允许在不同域名下，完成跨域的单点登录和退出机制； 6. 前后端分离： 用户在前后端分离的架构下(无Cookie模式)，也能轻易实现单点登录的相关功能； 7. 按钮级权限： 服务端对权限进行菜单和按钮分类，通过请求uri和请求方法匹配的方式实现权限按钮级控制； 8. 分布式部署： 服务端和客户端都支持基于Redis共享Token的多实例部署场景； 相关文档 - Smart-SSO单点登录（一）：介绍 - Smart-SSO单点登录（二）：快速开始 - Smart-SSO单点登录（三）：接入指南 - Smart-SSO单点登录（四）：前后端分离 - Smart-SSO单点登录（五）：分布式部署 代码托管 Github： https://github.com/a466350665/smart-sso Gitee： https://gitee.com/a466350665/smart-sso Gitcode： https://gitcode.com/openjoe/smart-sso 分支说明 - master分支基于SpringBoot 3.x + JDK 17 - 1.7分支基于SpringBoot 2.x + JDK 8 项目结构 技术选型 技术 版本 说明 ---------------------- ------- ---------------- spring-boot 3.3.4 容器 + MVC框架 spring-boot-starter-data-redis 3.3.4 分布式场景Token管理 spring-boot-starter-freemarker 3.3.4 模板引擎 springfox-boot-starter 3.0.0 文档 mybatis-plus-spring-boot3-starter 3.5.7 ORM框架 mysql-connector-j 8.2.0 数据库驱动 httpclient 4.5.14 授权码认证，客户端和服务端通信 为什么选用OAuth2？ 以下对常见的几种SSO认证方式对比： 特性 传统Token JWT OAuth2 ------------------ ----------------- -------------------- -------------------- 单点登录 支持 支持 支持 单点退出 支持 较难实现 支持 踢人下线 支持 较难实现 支持 过期续签 较难实现 支持 支持 性能 一般 高 较好 安全性 一般 较好 高","default_branch":null,"files":null,"tree":[],"storefront":"/r/a466350665","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/a466350665/smart-sso/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}