Release Notes
- 1 、 [重构] XXL-SSO 核心代码重构,基于“模块化”与“渐进式”设计思想,在轻量级、高扩展、渐进式的基础上,强化多登录类型、多认证方式等系统能力;2 、 [增强] 渐进式:支持渐进式集成接入使用,从简单到复杂场景,包括:单体系统(Web 常规登录)、复杂企业内多系统(CAS 单点登录)、互联网多端&高并发系统(Native 登录) 等,均可接入使用;3 、 [增强] 多登录类型:
- 登录态持久化组价( LoginStore ):提供登录态/会话数据持久化能力;官方提供 Cache 、Redis 等组件实现,可选用接入或自定义扩展;登录认证组件( Auth ):提供系统登录/认证集成能力;官方提供 Filter ( Servlet )和 Interceptor ( Spring )等实现,可选用接入或自定义扩展;登录用户模型( LoginInfo ):提供统一登录用户模型,且模型支持扩展存储自定义扩展属性;
- Web 常规登录:适用于常规“单体系统”场景;限制相关 Web 系统部署在相同域名下,登录凭证存储在公共域名下;Native 登录:适用于“移动端、小程序、前后端分离、客户端”等系统场景;适用于无 Cookie 场景,天然不受限域名。支持多端登录、以及登录态共享,但是登录凭证需要客户端管理维护;CAS 单点登录:适用于“多系统跨域、企业多系统统一登录”等系统场景;解决了系统 跨域登录认证、统一登录认证 问题;但是需要单独部署 CAS 认证中心、提供单点登录相关基础能力;
项目接入示例
XXL-SSO 作为单点登录框架,支持业务渐进式集成接入使用。结合系统及业务特征差异,仓库代码提供三种业务中接入示例:
- 1 、Web 常规登录:适用于常规“单体系统”场景;限制相关 Web 系统部署在相同域名下,登录凭证存储在公共域名下;2 、Native 登录:适用于“移动端、小程序、前后端分离、客户端”等系统场景;适用于无 Cookie 场景,天然不受限域名。支持多端登录、以及登录态共享,但是登录凭证需要客户端管理维护;3 、CAS 单点登录:适用于“多系统跨域、企业多系统统一登录”等系统场景;解决了系统 跨域登录认证、统一登录认证 问题;但是需要单独部署 CAS 认证中心、提供单点登录相关基础能力;
此处以 “Web 常规登录” 为例进行讲解:(**三种登录方式完整接入示例参考项目文档,如有需求可前往查看* *)
第一步:添加 maven 依赖以及 XXL-SSO 配置文件
### xxl-sso 登录凭证/token 传输 key, 用于 cookie 、header 登录凭证传输;xxl-sso.token.key=xxl_sso_token### xxl-sso 登录凭证/token 超时时间,单位毫秒;xxl-sso.token.timeout=604800000### xxl-sso 登录态持久化配置,如下为 Redis 组件相关配置;xxl-sso.store.redis.nodes=127.0.0.1:6379xxl-sso.store.redis.user=xxl-sso.store.redis.password=### xxl-sso 登录态存储,Redis key 前缀xxl-sso.store.redis.keyprefix=xxl_sso_user:### xxl-sso 客户端过滤排除路径,如 "/excluded/xpath"?"/excluded/xpath,/excluded/*"xxl-sso.client.excluded.paths=/weblogin/*,/static/**### xxl-sso 客户端登录页路径xxl.sso.client.login.path=/weblogin/login
第二部:配置 XXL-SSO 组件配置组件代码参考:xxl-sso-sample-web/src/main/java/com/xxl/sso/sample/config/XxlSsoConfig
第三部:代码中接入使用
接入 XXL-SSO 之后,业务可通过 注解 or API 进行 登录验证、权限验证。一行注解/代码即可实现 登录认证、权限认证、角色认证 等,接入灵活方便;
- 注解方式:
// a 、限制需要登录(默认设置,等同于不配置注解),但是不针对权限、或角色进行校验;@XxlSso @RequestMapping("/test")@ResponseBodypublic Response<String> test() { ...} // b 、不需要登录@XxlSso(login = false) // c 、限制需要登录;限制需要拥有指定注解@XxlSso(permission = "user:add") // d 、限制需要登录;限制需要拥有指定角色@XxlSso(role = "admin")
- API 方式:
// a 、登录操作:登录并获取登录凭证( token )。Response<String> loginResult = XxlSsoHelper.login(loginInfo);String token = loginResult.getData();// b 、登录信息更新操作:将会触发登录有效期续期;Response<String> result = XxlSsoHelper.loginUpdate(loginInfo);// c 、注销操作:将会注销登录态;Response<String> result = XxlSsoHelper.logout(token);// d 、登录态验证操作:将会验证登录态,返回已登录用户信息;Response<LoginInfo> result = XxlSsoHelper.loginCheck(token);// e 、权限角色校验操作:校验登录用户是否拥有指定角色;Response<String> result = XxlSsoHelper.hasRole(LoginInfo loginInfo, String role);// f 、权限项校验操作:校验登录用户是否拥有指定权限项;Response<String> result = XxlSsoHelper.hasPermission(LoginInfo loginInfo, String permission);
项目简介
XXL-SSO 是一个 单点登录框架,只需要登录一次就可以访问所有相互信任的应用系统。具备 “轻量级、高扩展、渐进式” 的等特性,支持 “登录认证、权限认证、角色认证、分布式会话认证、单点登录、Web 常规登录、前后端分离” 等多登录及认证类型,现已开放源代码,开箱即用。
文档地址
特性
- 1 、易用性:支持注解/API 多方式接入,一行注解/代码即可实现 登录认证、权限认证、角色认证 等,接入灵活方便;2 、轻量级:针对第三方组件、部署环境零依赖,部署及接入低成本、轻量级;3 、高扩展:得益于模块化抽象设计,各框架组件可灵活扩展;可选用官方提供组件实现或自定义扩展。
- 登录态持久化组价( LoginStore ):提供登录态/会话数据持久化能力;官方提供 Cache 、Redis 等组件实现,可选用接入或自定义扩展;登录认证组件( Auth ):提供系统登录/认证集成能力;官方提供 Filter ( Servlet )和 Interceptor ( Spring )等实现,可选用接入或自定义扩展;登录用户模型( LoginInfo ):提供统一登录用户模型,且模型支持扩展存储自定义扩展属性;
- Web 常规登录:适用于常规“单体系统”场景;限制相关 Web 系统部署在相同域名下,登录凭证存储在公共域名下;Native 登录:适用于“移动端、小程序、前后端分离、客户端”等系统场景;适用于无 Cookie 场景,天然不受限域名。支持多端登录、以及登录态共享,但是登录凭证需要客户端管理维护;CAS 单点登录:适用于“多系统跨域、企业多系统统一登录”等系统场景;解决了系统 跨域登录认证、统一登录认证 问题;但是需要单独部署 CAS 认证中心、提供单点登录相关基础能力;
- 登录认证:本质为验证用户身份的过程,目的是确认“你是谁”,确保访问者合法可信;权限认证:在用户身份认证通过后,校验用户是否具备访问特定资源的权限,决定“你能做什么”;认证维度是“权限”;角色认证:在用户身份认证通过后,校验用户是否具备访问特定资源的权限,决定“你能做什么”;认证维度是“角色”;