V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuxueli
V2EX  ›  程序员

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

  •  
  •   xuxueli · 5 天前 · 994 次点击

    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  
       5 天前 via Android
    最近一直在给我的一个小社区论坛找一个 sso 的轻量级“平台”,一直找不到,casdoor 太重了。op 发的这个翻了一下还是框架,太难找到合适的了。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1173 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:48 · PVG 07:48 · LAX 16:48 · JFK 19:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.