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、登录态自动延期:支持自定义登录态有效期窗口,当登录态有效期窗口过半时自动顺延一个周期;

XXL-SSO v1.2.0 发布|单点登录框架的更多相关文章

  1. SSO 基于Cookie+fliter实现单点登录(SSO):工作原理

    SSO的概念: 单点登录SSO(Single Sign-On)是身份管理中的一部分. SSO的一种较为通俗的定义是:SSO是指訪问同一server不同应用中的受保护资源的同一用户,仅仅须要登录一次,即 ...

  2. 分布式单点登录框架XXL-SSO

    <分布式单点登录框架XXL-SSO> 一.简介 1.1 概述 XXL-SSO 是一个分布式单点登录框架.只需要登录一次就可以访问所有相互信任的应用系统. 拥有"轻量级.分布式.跨 ...

  3. 深度剖析分布式单点登录框架XXL-SSO

    于2018年初,在github上创建XXL-SSO项目仓库并提交第一个commit,随之进行系统结构设计,UI选型,交互设计-- 于2018年初,在github上创建XXL-SSO项目仓库并提交第一个 ...

  4. 推荐一个分布式单点登录框架XXL-SSO!

    有关单点登录(SSO)之前有写过两篇文章 一文读懂 JWT! 看完这篇不能再说不懂SSO原理了! 如果说XXL-JOB你可能并不陌生,它是非常火爆的一个分布式任务调度平台.但其实在该作者还有一个非常优 ...

  5. Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署

    Hadoop生态圈-单点登录框架之CAS(Central Authentication Service)部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.CAS简介 CAS( ...

  6. SSO 基于Cookie+fliter实现单点登录 实例解析(一)

    接上文,SSO的理论讲解,接下来实践实践! 1.使用Cookie解决单点登录 技术点: 1.设置Cookie的路径为setPath("/").即Tomcat的目录下都有效 2.设置 ...

  7. 统一门户与业务系统的sso整合技术方案(单点登录)

    一.单点登录(SSO,Single Sign On)整合目前计划接入统一门户的所有业务系统均为基于JavaEE技术的B/S架构系统.由于统一门户的单点登录技术选用的是JA-SIG组织开发的Cas Se ...

  8. 【SSO】一个简单的单点登录演示实现

    业务系统的管理后台往往数量众多,且各自需要一套用户名密码来进行登录,不方便使用.因此花了点时间研究如何实现一套单点登录系统. 众所周知,SSO系统设计中,往往需要想办法解决cookie不能跨域的问题, ...

  9. RapidJSON v1.1.0 发布简介

    时隔 15.6 个月,终于发布了一个新版本 v1.1.0. 新版本除了包含了这些日子收集到的无数的小改进及 bug fixes,也有一些新功能.本文尝试从使用者的角度,简单介绍一下这些功能和沿由. P ...

  10. [精华][推荐]CAS SSO 单点登录框架学习 环境搭建

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

随机推荐

  1. FastMCP(python)和 SolonMCP(java)的体验比较(不能说一样,但真的很像)

    从 MCP SDK 的发展史上看,FastMCP 是前辈,SolonMCP 则是后辈.mcp-python-sdk 功能完善,已经很成熟了.而 mcp-java-sdk 却还不完善,比如: 还不支持 ...

  2. iOS快捷指令——记录今天、今年已过进度的工具

    起因是看到了 大佬博客 里面一个计时的小工具,于是也想搞一个来提醒自己珍惜时间. 经过一段时间对快捷指令的摸索,最终选择了如下的方式完成: 快捷指令的链接在这里给出: https://www.iclo ...

  3. Java Set的五种遍历方式

      摘要:介绍Java遍历Set的五种方式,并分析哪中方式效率高,建议使用增强for循环变量.   Set 和 List 遍历方式基本一致,本文介绍Set的遍历方式,并比较那种方法执行效率最高. 1. ...

  4. 初探Iris

    Iris 安装 go get -u github.com/kataras/iris 若遇到下面这种情况: 可删除保存路径中的kataras目录,并执行go get github.com/kataras ...

  5. From Small Not Perfect

    自己想实现一个共享文档,然后统计每个人每周做题的数量,然后还想到每个月的统计,每年的统计,哇,好复杂哈 所以我想先做一个Excel,然后开始使用,中间发现了问题,然后调整,修改. 当我做了这个Exce ...

  6. DTALK直播预约 | 数据资产管理:金融机构数据价值释放的必经之路

    当前,数据对金融机构业务和发展的重要性日益凸显,释放数据生产力已经成为金融机构进行全面数字化转型的核心,这就要求金融机构以数据资产为纲不断提升自身数据资产管理能力. 本期DTALK我们邀请到雅拓信息解 ...

  7. ArcGIS Pro SDK 001 基于SDK创建第一个插件

    ArcGIS Pro SDK只能开发ArcGIS Pro软件上的插件,不能单独开发独立的应用程序.ArcMap是32位的,在处理大数据时,经常会崩溃,但同样的数据和逻辑,因为ArcGIS Pro是64 ...

  8. 地震储层预测笔记—AVO近似公式总结

    地震储层预测笔记-AVO近似公式总结 (一).Zeoppritz方程 AVO地球物理基础是平面弹性波在层状介质下推倒得出的Zeopprizt方程,在两层介质下(如图1所示)其Zeopprizt方程可以 ...

  9. C# 列出所有打印机

    https://blog.csdn.net/weixin_38211198/article/details/89740286 不过这个分享不能赋值,正的麻烦,所以我拷贝过来了 该方法只能再Window ...

  10. SQL Server Management Studio (SSMS)备份数据库

    在服务器上,用SQL Server Management Studio (SSMS)可以更加快速的备份数据库,备份出来的文件为bak格式. 1. 操作步骤 (1) 备份 ① 打开下面的软件 ② 选择某 ...