XXL-SSO v1.2.0 发布|单点登录框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX    程序员

XXL-SSO v1.2.0 发布|单点登录框架

  •  
  •   xuxueli 108 天前 1507 次点击
    这是一个创建于 108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Release Notes

    • 1 、 [重构] XXL-SSO 核心代码重构,基于“模块化”与“渐进式”设计思想,在轻量级、高扩展、渐进式的基础上,强化多登录类型、多认证方式等系统能力;
    • 2 、 [增强] 渐进式:支持渐进式集成接入使用,从简单到复杂场景,包括:单体系统(Web 常规登录)、复杂企业内多系统(CAS 单点登录)、互联网多端&高并发系统(Native 登录) 等,均可接入使用;
    • 3 、 [增强] 多登录类型:
      • 登录态持久化组价( LoginStore ):提供登录态/会话数据持久化能力;官方提供 Cache 、Redis 等组件实现,可选用接入或自定义扩展;
      • 登录认证组件( Auth ):提供系统登录/认证集成能力;官方提供 Filter ( Servlet )和 Interceptor ( Spring )等实现,可选用接入或自定义扩展;
      • 登录用户模型( LoginInfo ):提供统一登录用户模型,且模型支持扩展存储自定义扩展属性;
    • 4 、 [增强] 多登录类型:
      • Web 常规登录:适用于常规“单体系统”场景;限制相关 Web 系统部署在相同域名下,登录凭证存储在公共域名下;
      • Native 登录:适用于“移动端、小程序、前后端分离、客户端”等系统场景;适用于无 Cookie 场景,天然不受限域名。支持多端登录、以及登录态共享,但是登录凭证需要客户端管理维护;
      • CAS 单点登录:适用于“多系统跨域、企业多系统统一登录”等系统场景;解决了系统 跨域登录认证、统一登录认证 问题;但是需要单独部署 CAS 认证中心、提供单点登录相关基础能力;
    • 5 、 [新增] 安全性:针对系统框架多个模块落地安全性设计,包括:登录 Token 安全设计、客户端登录凭证 Cookie 安全设计、CAS 跳转 Ticket 安全设计 等;
    • 6 、 [优化] 升级多项依赖至较新版本;

    项目接入示例

    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:6379 xxl-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") @ResponseBody public 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 ):提供统一登录用户模型,且模型支持扩展存储自定义扩展属性;
    • 4 、渐进式:支持渐进式集成接入使用,从简单到复杂场景,包括:单体系统(Web 常规登录)、复杂企业内多系统(CAS 单点登录)、互联网多端&高并发系统(Native 登录) 等,均可接入使用;
    • 5 、多登录类型:
      • Web 常规登录:适用于常规“单体系统”场景;限制相关 Web 系统部署在相同域名下,登录凭证存储在公共域名下;
      • Native 登录:适用于“移动端、小程序、前后端分离、客户端”等系统场景;适用于无 Cookie 场景,天然不受限域名。支持多端登录、以及登录态共享,但是登录凭证需要客户端管理维护;
      • CAS 单点登录:适用于“多系统跨域、企业多系统统一登录”等系统场景;解决了系统 跨域登录认证、统一登录认证 问题;但是需要单独部署 CAS 认证中心、提供单点登录相关基础能力;
    • 6 、多认证方式:
      • 登录认证:本质为验证用户身份的过程,目的是确认“你是谁”,确保访问者合法可信;
      • 权限认证:在用户身份认证通过后,校验用户是否具备访问特定资源的权限,决定“你能做什么”;认证维度是“权限”;
      • 角色认证:在用户身份认证通过后,校验用户是否具备访问特定资源的权限,决定“你能做什么”;认证维度是“角色”;
    • 7 、分布式会话/认证:支持分布式登录以及会话认证,集成分布式系统可共享的 登录态持久化组价( LoginStore ),可选用或参考官方 RedisLoginStore ;
    • 8 、安全性:针对系统框架多个模块落地安全性设计,包括:登录 Token 安全设计、客户端登录凭证 Cookie 安全设计、CAS 跳转 Ticket 安全设计 等;
    • 9 、单点登录:针对 CAS 单点登录场景,提供单点登录及注销能力;
    • 10 、跨域登录认证:针对 CAS 单点登录场景,支持跨域 Web 应用接入,解决了系统 跨域登录认证 问题;
    • 11 、高可用/HA:针对 CAS 单点登录场景,CAS 认证中心支持集群部署,并可借助 LoginStore 实现登录态共享,从而实现系统水平扩展以及高可用;
    • 12 、多端登录认证:针对多端登录场景,如 Web 、移动端、小程序 等多端,提供多端登录及认证能力;
    • 13 、前后端分离:针对前后端分离系统,提供 Native 登录 方案,支持前后端分离场景登录认证能力;
    • 14 、记住密码:支持记住密码功能;记住密码时,支持登录态自动延期;未记住密码时,关闭浏览器则登录态失效;
    • 15 、登录态自动延期:支持自定义登录态有效期窗口,当登录态有效期窗口过半时自动顺延一个周期;
    1 条回复    2025-07-27 17:11:23 +08:00
    8820670
        1
    8820670  
       108 天前 via Android
    最近一直在给我的一个小社区论坛找一个 sso 的轻量级“平台”,一直找不到,casdoor 太重了。op 发的这个翻了一下还是框架,太难找到合适的了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2445 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 15:49 PVG 23:49 LAX 07:49 JFK 10:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86