XXL-SSO单点登录___整合APP手机端+PC端

xxl-sso:分布式单点登录框架。(分布式单点登录框架XXL-SSO) XXL-单点登录 XXL-SSO,一种分布式单点登录框架。 介绍 XXL-SSO是一个分布式单点登录框架。 您只需登录一次即可访问所有受信任的应用程序系统。 它具有“轻量级,可伸缩,分布式,跨域,Web + APP支持访问”功能。 现在,它已经是开放源代码,真正的“开箱即用”。 XXL-SSO是一个分布式单点登录框架。只需要登录一次就可以可以访问所有相互信任的应用系统。拥有“轻量级,分布,跨域,Cookie + Token均支持,Web + APP均支持”等特性。扩展开放源代码,开箱即用。 文献资料 通讯 产品特点 简洁:API直观简洁,可快速上手 轻量级:环境依赖小,部署与接收成本费用 立即下载

一开始很排斥XXL-SSO,没办法每当接触新的技术就感到很吃力,就像去年用Python写爬虫一样,一周才学会爬虫,废话不多说,直接上干货
从guthub上获取XXL-SSO源码(后来才知道XXL是作者徐雪里的简写),直接下载下来就能用,
github地址
毕竟是开源的,好处比较多,来来来,上度娘

1、简洁:API直观简洁,可快速上手;
2、轻量级:环境依赖小,部署与接入成本较低;
3、单点登录:只需要登录一次就可以访问所有相互信任的应用系统。
4、分布式:接入SSO认证中心的应用,支持分布式部署;
5、HA:Server端与Client端,均支持集群部署,提高系统可用性;
6、跨域:支持跨域应用接入SSO认证中心;
7、Cookie+Token均支持:支持基于Cookie和基于Token两种接入方式,并均提供Sample项目;
8、Web+APP均支持:支持Web和APP接入;
9、实时性:系统登陆、注销状态,全部Server与Client端实时共享;
10、CS结构:基于CS结构,包括Server"认证中心"与Client"受保护应用";
11、记住密码:未记住密码时,关闭浏览器则登录态失效;记住密码时,支持登录态自动延期,在自定义延期时间的基础上,原则上可以无限延期;
12、路径排除:支持自定义多个排除路径,支持Ant表达式。用于排除SSO客户端不需要过滤的路径;

其中源码中有几个比较重要的包,解释下

  • xxl-sso-server:中央认证服务,支持集群;
  • xxl-sso-core:Client端依赖;
  • xxl-sso-samples:单点登陆Client端接入示例项目;
    • xxl-sso-web-sample-springboot:基于Cookie接入方式,供用户浏览器访问,springboot版本
    • xxl-sso-token-sample-springboot:基于Token接入方式,常用于无法使用Cookie的场景使用,如APP、Cookie被禁用等,springboot版本

这三个包写的很清楚了,具体用处什么的,还有就是需要理解下面几个概念

sso-server:中央认证服务
sso-client:接入 sso 认证中心的客户端应用
sso-sessionId:登陆用户会话ID,SSO 登陆成功后为用户自动分配
sso-user:登陆用户信息,与 SSO sessionId 相对应

这个是重点,都说有了思想才有代码,
登陆流程剖析:

  1. 客户端访问受限资源时,将会自动重定向到 SSO Server 进入统一登录界面
  2. 用户登录成功之后将会为用户分配 SSO SessionId 并重定向返回来源客户端端应用,同时附带分配的 SSO SessionId
  3. 在客户端的 SSO 过滤器里验证 SSO SessionId 无误,将 SSO SessionId 写入到用户浏览器客户端域名下 cookie 中
  4. SSO 过滤器验证 SSO SessionId 通过,受限资源请求放行

这些看一遍有个印象,到最后项目搭建好测试成功之后再看就有种恍然大悟的感觉
开始搭建项目
第一:引入依赖

<dependency>
    <groupId>com.xuxueli</groupId>
    <artifactId>xxl-sso-core</artifactId>
    <version>${最新稳定版}</version>
</dependency>

第二:项目启动Spring注入bean

@Bean
public FilterRegistrationBean xxlSsoFilterRegistration() {

    // xxl-sso, redis init
    JedisUtil.init(xxlSsoRedisAddress);

    // xxl-sso, filter init
    FilterRegistrationBean registration = new FilterRegistrationBean();

    registration.setName("XxlSsoWebFilter");
    registration.setOrder(1);
    registration.addUrlPatterns("/*");
    registration.setFilter(new XxlSsoWebFilter());
    registration.addInitParameter(Conf.SSO_SERVER, xxlSsoServer);
    registration.addInitParameter(Conf.SSO_LOGOUT_PATH, xxlSsoLogoutPath);

    return registration;
}

这里要注意的是WebFilter,如果你的项目是前后端分离的话直接引入TokenFilter,当然也可以App+前后端不分离的那就注入两个Bean,下面是TokenFilter

 @Bean
    public FilterRegistrationBean<HnyfkjSsoTokenFilter> hnyfkjSsoTokenFilterRegistration() {

        // hnyfkj-sso, redis init
        JedisUtil.init(hnyfkjSsoRedisAddress);

        // hnyfkj-sso, filter init
        FilterRegistrationBean<HnyfkjSsoTokenFilter> registration = new FilterRegistrationBean<>();

        registration.setName("HnyfkjSsoTokenFilter");
        registration.setOrder(1);
        registration.addUrlPatterns("/*");
        registration.setFilter(new HnyfkjSsoTokenFilter());
        registration.addInitParameter(Conf.SSO_SERVER, hnyfkjSsoServer);
        registration.addInitParameter(Conf.SSO_LOGOUT_PATH, hnyfkjSsoLogoutPath);
        registration.addInitParameter(Conf.SSO_EXCLUDED_PATHS, hnyfkjSsoExcludedPaths);

        return registration;
    }

一开始只注入一个Bean,所以一直用app接口去掉,每次都是sso未登录,这是一点容易犯的错,注入两个过滤器之后,两个过滤器,每次都过滤两遍,试想下,手机端也要经过Web端过滤,那也永远都无法访问,因为APP端和Web端不同的是请求头带有token值的,而Web端则是存在Cookie中,所以在过滤器中加一个条件,判断下就可以了,下面在过滤器进入的时候写的,可能我的办法也不是唯一的,判断APP和PC端有别的办法也可以

String webHeader = req.getHeader(Conf.SSO_SESSIONID);
		if (!StringUtils.hasLength(webHeader)) {
			chain.doFilter(request, response);
			return;
		}

这个在tokenFilter里面写的,请求头中是空的话就跳转下一个过滤器,不为空的话就往下走

String webHeader = req.getHeader(Conf.SSO_SESSIONID);
		if (StringUtils.hasLength(webHeader)) {
			chain.doFilter(request, response);
			return;
		}

这个是webFilter的,和Token相反,因为Web端请求头head中永远都是没有数据的,所以要把那个取反去掉,不然这个过滤器永远不会往下走了,这也是一个坑,开始的时候我两边都写了,PC端怎么都不成功,后来debug才发现过滤器卡这里了

过滤器写好了之后,启动用户中心服务端,用户中心客户端,还有你的本地的项目,对了,你本地的项目配置文件里面需要指定用户中心的地址,我本地项目端口是8082,指向的用户中心端口是8080

server:
  port: 8082
  servlet:
    context-path: /
spring:
  freemarker:
    request-context-attribute: request
    suffix: .ftl
hnyfkj.sso.server: http://127.0.0.1:8080/
hnyfkj.sso.logout.path: /logout
hnyfkj.sso.excluded.paths: 
hnyfkj.sso.redis.address: redis://127.0.0.1:6379

本地就两个类,一个启动类Application,一个Config类(注入bean的),其他的暂时没加,根据你的业务来添加Controller

启动之后用PC端来访问下8082,看看出现了什么

在这里插入图片描述直接跳转到了用户中心页面,然后我们登录下看看

在这里插入图片描述又跳转回了我们项目的页面,而且带着ssionId一起返回的,然后我们再直接访问8082,此时因为已经存到了cookie,所以应该是不需要登陆的,我们看下结果

在这里插入图片描述恩,直接登陆了,并没有再次输入账号密码了,这是单系统的单点登录,三八节没事,多系统的我做下再补充,一般用同一个注册中心,相同的账户名,应该在不同的系统都不需要登录的

接下来我们测下手机端,APP端的测试就不可以用网址输入了,因为id在请求头中,我们使用postman进行测试,先输入账号密码进行登录

在这里插入图片描述我们请求成功了,返回了唯一的sessionId,然后我们用这个万能的token去查找接口

在这里插入图片描述把sessionId放进去了请求头,进行请求用户信息,结果返回得到了,用户的信息,恩,这就相当于授权手机之后,手机可以拿着你给的令牌去访问各种链接了

今天就写到这里吧,单点登录可能理解的还不是很透彻,下周还得继续搞用户中心的权限控制,唉,志伟的头发又要掉一撮了,哈哈哈,明天周末有人约没,没人我就又是一个人无聊看Python视频了

从零构建2.4G无线通信系统:MSPM0G3507与NRF24L01的深度协同设计 本文详细介绍了基于MSPM0G3507微控制器与NRF24L01射频模块构建2.4G无线通信系统的深度协同设计方案。内容涵盖系统架构、SPI通信优化、功耗管理、抗干扰机制及中断/DMA高效利用,为工业物联网应用提供高可靠、低功耗的无线传输解决方案。 阅读详情

相关推荐

ANSYS 2022R2 安装教程:系统准备、许可证配置与故障排查

ANSYS 是面向工程仿真的多物理场商业软件平台,其安装远非普通应用软件的图形化向导流程,而涉及操作系统版本、运行库精确版本、硬件虚拟化支持、许可证服务架构等系统级配置。理解 ANSYS License Manager 的服务机制与端口依赖、掌握 Visual C++ 和 .NET Framework 的启用逻辑,是保障 Fluent、Mechanical、HFSS 等求解器稳定调用的基础。该技术栈广泛应用于高校教学、航空航天结构分析、电子设备电磁兼容仿真等场景。本指南聚焦 ANSYS 2022R2 版本在

weixin_28559803的博客 595

SpringCloud分布式微服务新零售电商平台项目实战教程(附源码)

该项目是采用目前比较流行的SpringBoot/SpringCloud构建微服务电商项目,项目叫 《果然新鲜》,实现一套串联的微服务电商项目。完全符合一线城市微服务电商的需求,对学习微服务电商架构,有非常大的帮助,该项目涵盖从微服务电商需求讨论、数据库设计、技术选型、互联网安全架构、整合SpringCloud各自组件、分布式基础设施等实现一套完整的微服务解决方案。 项目使用分布式微服务框架,涉及后台管理员服务、地址服务、物流服务、广告服务、商品服务、商品类别服务、品牌服务、订单服务 、购物车服务、首页频道服务、公告服务、留言服务、搜索服务、会员服务等。  系统架构图   SpringBoot+SpringCloud+SSM构建微服务电商项目使用SpringCloud Eureka作为注册中心,实现服务治理使用Zuul网关框架管理服务请求入口使用Ribbon实现本地负载均衡器和Feign HTTP客户端调用工具使用Hystrix服务保护框架(服务降级、隔离、熔断、限流)使用消息总线Stream RabbitMQ和 Kafka微服务API接口安全控制和单点登录系统CAS+JWT+OAuth2.0分布式基础设施构建分布式任务调度平台XXL-JOB分布式日志采集系统ELK分布式事务解决方案LCN分布式锁解决方案Zookeeper、Redis分布式配置中心(携程Apollo)高并发分布式全局ID生成(雪花算法)分布式Session框架Spring-Session分布式服务追踪与调用链Zipkin项目运营与部署环境分布式设施环境,统一采用Docker安装使用jenkins+docker+k8s实现自动部署微服务API管理ApiSwagger使用GitLab代码管理(GitHub  GitEE)统一采用第三方云数据库使用七牛云服务器对静态资源实现加速 开发环境要求JDK统一要求:JDK1.8Maven统一管理依赖 统一采用Docker环境部署编码统一采用UTF-8开发工具IDEA 或者 Eclipse 

计算机导论期末知识点及试题总结 [近三万字总结 · 全]

计算机网络:计算机网络是利用通信线路连接起来相互独立的计算机的集合,其主要目的是实现数据通信和资源共享。 计算机病毒:破坏计算机功能或数据,影响计算机使用,并能自我复制的一组计算机指令或程序。 操作系统:操作系统是由程序和数据结构组成的大型系统软件,它负责计算机的全部软硬件的资源分配,调度和管理,控制各类程序的正常执行,并为用户使用计算机提供良好的环境。 高速缓冲储存器(Cache):位于cpu和内存之间的储存器,其特点是速度快,目的是是储存器的速度与cpu的速度相匹配。 总线:若干信号线的集合,是

这个人好有趣....hh 1万+

分布式单点登录框架XXL-SSO(一)入门

简介 1.概述 XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,开箱即用。 2.特性 1、简洁:API直观简洁,可快速上手 2、轻量级:环境依赖小,部署与接入成本较低 3、单点登录:只需要登录一次就可以访问所有相互信任的应用系统 4、分...

踟蹰千年的博客 1935

MATLAB联合Fluent优化仿真

matlab与fluent交互

keleke_的博客 4721

gtsam 学习十(ISAM2 理论)

翻译自:iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree 摘要 提出了一种新型的贝斯树处理稀疏矩阵,在转化为因子图,可以更好的求解平方根信息和映射问题。 文中提出了三个概念 使用概率密度项进行矩阵分解 介绍如何将矩阵分解转换为贝叶斯数和条件概率密度 基于贝叶斯树提供了一种新的系数非线性优化:ISAM2(进行重新排序和重新线性化,避免了批量更新) 问题描述 文章聚焦与如何用增量实时解决非线性问题, 利用增量即新的测量值实时更新估

weixin_37781153的博客 8407

XXL-SSO 实现SSO单点登录

1. 概述: 本文旨在使用XXL-SSO开源架构 实现单点登录系统。 2. XXL-SSO简介: XXL-SSO 是一个分布式单点登录框架、只需要登录一次就可以访问所有相互信任的应用系统。 拥有”轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持”等特性。现已开放源代码,开箱即用。 官网地址:https://www.xuxueli.com/xxl-sso/#/ 3. 准备: 下载XXL-SSO https://github.com/xuxueli/xxl-ssohttp

zetor的专栏 6119

onnx入门教程(一):解决模型部署中的难题

直接使用 PyTorch 模型的话,我们修改几行代码就能实现模型输入的动态化。但在模型部署中,我们要花数倍的时间来设法解决这一问题。现在,让我们顺着解决问题的思路,体验一下模型部署的困难,并学习使用自定义算子的方式,解决超分辨率模型的动态化问题。刚刚的报错是因为 PyTorch 模型在导出到 ONNX 模型时,模型的输入参数的类型必须全部是 torch.Tensor。而实际上我们传入的第二个参数" 3 "是一个整形变量。这不符合 PyTorch 转 ONNX 的规定。我们必须要修改一下原来的模型的输入。

图像学习之旅 1126

一篇了解SSO单点登录

单点登录的英文名叫做:(简称SSO)。在初学/以前的时候,一般我们就单系统,所有的功能都在同一个系统上。后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统。比如阿里系的淘宝和天猫,很明显地我们可以知道这是两个系统,但是你在使用的时候,登录了天猫,淘宝也会自动登录。 众所周知,HTTP是无状态的协议,这意味着服务器无法确认用户的信息。于是乎,W3C就提出了:给每一个用户都发一个通行证,无论谁访问的时候都需要携带通行证,这样服务器就可以从通行证上确认用户的信息。通行证就是Cookie。

haidi8 3028

【Elasticsearch专栏 16】深入探索:Elasticsearch的Master选举机制及其影响因素分析

Elasticsearch的Master选举机制是其分布式架构的基石,确保集群高可用性和数据一致性。通过多数派协议,节点间交换信息并投票选举Master,以维护集群状态和处理请求。该机制自动处理故障转移,保障服务连续性。

weixin_40736233的博客 1773

基于FPGA的时间数字转换(TDC)设计(一:原理)

基于FPGA的时间数字转换(TDC)设计,此为第一篇

sdau2005的博客 5069

XXl-SSO分布式单点登录框架

XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,开箱即用。

tian830937的专栏 2947

6-2 GPU GART 绑定机制与 TLB 失效

本文详细解析了AMD GPU的GART(Graphics Address Remapping Table)绑定机制实现。主要内容包括: 绑定流程:从ttm_tt_bind()到硬件PTE更新的完整调用链,重点分析amdgpu_gart_bind()函数实现。 关键函数: amdgpu_gart_bind():执行安全检查、记录映射关系、更新页表等操作 amdgpu_gart_map():将CPU页映射为多个GPU页并填充PTE amdgpu_gmc_set_pte_pde():处理硬件特定的PTE格式 内存

图形/计算GPU的驱动与虚拟化技术分享园地 2644

xxl-sso源码解读(基于Cookie)

讲解xxl-sso源码,帮助了解xxl-sso实现原理和对于跨域单点登录的处理方法

奋斗的新丁 2009

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringBoot集成xxl-sso实现单点登录!

前言 ​ 单点登录SSO(Single Sign On),凡是有一定的开发经验的童鞋都应该有应用或者了解过,小编还是实习生的时候,看到登录某个应用服务后,再跳转其他应用服务,竟然不用再次登录了,觉得贼拉风,不知道大家第一见这种场景时是不是跟小编一样的感觉。今天小编给大家介绍一款分布式单点登录组件xxl-sso,目的就是让大家能短时间内快速的应用到项目中,并从中了解其中的相关的实现原理。 项目介绍 ​ xxl-sso是一款基于redis轻量级分布式高可用的SSO实现组件,支持web端(Cook

快速成长的小菜鸟 4648

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

XXL-SSO:一站式单点登录解决方案

是由开发者 [xuxueli](https) 创建的一个强大而灵活的单点登录(Single Sign-On, SSO)系统。它旨在为多应用环境提供统一的身份验证和授权管理,简化了用户在多个关联应用之间的登录流程。该项目开源、免费,并且持续更新,社区活跃,拥有良好的文档支持。 ## 技术分析 ### 架构设计 XXL-SSO 采用中心化服务端处理认证的模式,核心组件包括: 1. **SSO

gitblog_00088的博客 666

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

XXL-SSO 是一个 单点登录框架,只需要登录一次就可以访问所有相互信任的应用系统。具备 “轻量级、高扩展、渐进式” 的等特性,支持 “登录认证、权限认证、角色认证、分布式会话认证、单点登录、Web常规登录、前后端分离” 等多登录及认证类型,现已开放源代码,开箱即用。

许雪里 1102

关于XXL-SSO分布式单点登录

基于XXL-SSO分布式框架的单点登录实现

qq_36461021的博客 518

基于第三方开源框架xxl-sso单点登录的实现

XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。拥有”轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持”等特性。现已开放源代码,开箱即用。官方地址。

weixin_42562567的博客 1397

XXL-SSO简要说明

XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。拥有”轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持”等特性。现已开放源代码,开箱即用。官方文档XXL-SSO的原理其实非常的简单用户访问系统,如果没有登录会被重定向到服务端,在服务端进行登录,登录之后会将生成的认证信息存储在Cookie中,这样,同一个浏览器中的系统请求的时候都会携带上Cookie,这样就可以通过拦截器判断该用户是否登录,以此来实现单点登录的效果。

progammer10086的博客 1360

深度源码分析——XXL-SSO分布式单点登录框架(轻量级、分布式、跨域、Cookie+Token、Web+APP均支持)...

什么是XXL-SSO XXL-SSO 是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,开箱即用。 特性 1、简洁:API直观简...

chuanyingcao2675的博客 1138

借助xxl-sso实现SSO

前言 市场上一下主流的SSO技术搭配方案: SpringSecurity + OAuth2 SpringSecurity + CAS 功能较弱,对前后端分离的项目支持不是很好 Shiro + CAS JWT 可以自定义需求,灵活扩展鉴权方式 本篇主要是单点登录,不涉及鉴权,后面文章会再补充 xxl-sso 是一个国产 SSO 框架,基于 cooki...

weixin_30673715的博客 593

xxl-sso的两种单点登录方式

首先要先理解什么是单点登录:https://blog.youkuaiyun.com/qq_33472765/article/details/81489158 单点登录跟session共享是有区别的 单点登录中用到了session共享; 一般来讲单点登录是 跨域+session共享 ?(个人浅显的理解) 浏览器访问不同的域名时,不会把所有的cookie都携带上; 只会携带跟域名对应的; A域名的cookie不会被带到B域名去; xxl-sso项目文档地址:https://www.xuxueli.com/xxl-sso/

qq_41132384的博客 767

XXL-SSO单点登录

为什么需要做单点登陆系统 大型互联网公司中,公司旗下可能会有多个子系统,每个登陆实现统一管理。 自己简单实现单点登录 登录成功->生成唯一key存入redis,同时把key交给cookie进行管理,其它服务浏览器请求后台时带着cookie中的key进行请求,后台判断key是否存在redis以及是否过期。 redis:key保证唯一UUID, value存用户信息(json串 uuid {id:1, name:'张三'}) 单点登陆系统实现思路 https://www.xuxueli.co.

祁_z 799

XXL-SSO 分布式单点登录框架安装及使用指南

**XXL-SSO** 是一款高效、灵活的分布式单点登录框架,旨在实现“一次登录,全网通行”的便捷体验。对于企业内部多个系统的整合管理尤为适用,能够显著提升用户体验,简化IT运维工作。具备以下核心特点: - **轻量化设计**: 极简的API接口设计,便于快速集成。 - **高扩展性**: 支持分布式部署,以及HA高可用架构。 - **广泛兼容性**: 兼容不同领域应用,无论是Web

gitblog_00835的博客 696

单点登录(SSO)看这一篇就够了

单点登录(SSO)看这一篇就够了

乌龟的专栏 1万+
上一篇: 条件爬取Flash网站数据,百度都是不带条件的爬取_爬虫_第二篇
下一篇: 一个简单的短信注册Demo
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值