xxl-sso单点登录

简介: ### 一、如何实现一个简单的认证中心?​ 我们知道单点登录系统:出名的有[apereo](https://github.com/apereo)的cas和OAuth2、JWT等。通常认证有两个方案:​ 一个方案是基于token,另一个方案是基于cookie的。基于xxl-sso,我们可以学习到实现的基本是基于过滤器的增强,从而实现重定向。我之前的公司使用的是基于[apereo](https://github.com/apereo)的cas进行的二次开发配合统一授权系统使用。cas的单点登录的登录涉及到三个概念:

一、如何实现一个简单的认证中心?

       我们知道单点登录系统:出名的有apereo的cas和OAuth2、JWT等。通常认证有两个方案:

        一个方案是基于token,另一个方案是基于cookie的。基于xxl-sso,我们可以学习到实现的基本是基于过滤器的增强,从而实现重定向。我之前的公司使用的是基于apereo的cas进行的二次开发配合统一授权系统使用。cas的单点登录的登录涉及到三个概念:

TGC(ticket-granting cookie)

Service Ticket ( ST )

Ticket Granted Cookie ( TGC )

同时采用webflow实现流转。其相对来说,比较复杂。其本质还是基于过滤器。

由此我们可以看到xxl-sso的思想也是基于过滤器实现自己的增强。

我们可以回忆CAS的登录场景:

      首先登录业务系统,或者登录一个父系统,从而进入到子系统。这个过程通常需要经历三个url的跳转:      

业务系统的url

如果没有登录进行重定向跳转到认证中心

认证中心登录后,再跳回到业务系统的url

1.基于cookie的方案

1).进行业务系统登录,如果没有登录,则跳转到认证中心

2).进入到认证,通常单点登录系统需要配合统一授权系统使用,

  也即做菜单权限的分配,将菜单的权限具体分配给到人。

3).持久化用户信息到数据库,进行菜单分配,进行权限控制,

  通过APP进行用户信息采集。

 

4).经过单点登录认证。拿到用户信息,去认证中心认证。

2.基于token的方案

1).首先采集用户信息,持久化到数据库

2).通过账号和密码访问服务端的登录接口就可以拿到token

3).业务系统在拿到token后,可以基于token来进行访问自己想要访问的接口

4).此时可以将token信息放入到redis中,从而实现对token信息的存储。

5).同时可以对token进行续期

二、xxl-sso的架构图

image-20230125220259875.png

      可以看到在sso-server启动后,业务系统登录的时候,进行重定向到sso-server,携带sso sessionid进行访问。或者基于token的方案,进行操作。从架构图中可以看到这个重定向很重要。

三、实战操作

启动sso-server端

1.基于token访问

通过账号和密码访问服务端的登录接口就可以拿到token:

http://localhost:8080/xxl-sso-server/app/login?username=user&password=123456

image-20230125221224392.png

{"code":200,"msg":null,"data":"1000_62003f860f954cf0a20d6824a01d1f9a"}

拿到token进行访问接口

http://127.0.01:8082/xxl-sso-token-sample-springboot/

image-20230125221533227.png

可以对ip端口做域名映射,访问业务系统接口:

{

   "code": 200,

   "msg": null,

   "data": {

       "userid": "1001",

       "username": "user1",

       "plugininfo": null,

       "version": "dcb4e801240545328d2c1ac691bf0f9c",

       "expireMinute": 1440,

       "expireFreshTime": 1674649196500

   }

}

进行退出操作:

http://127.0.01:8082/xxl-sso-token-sample-springboot/logout

image-20230125221632284.png

再次请求业务系统的接口:

http://127.0.01:8082/xxl-sso-token-sample-springboot

image-20230125221739278.png

可以看到已经显示无效了。

2.基于cookie进行登录

首先需要做一个域名映射:

127.0.0.1 xxlssoserver.com

首先进行访问:

http://localhost:8081/xxl-sso-web-sample-springboot

进行拦截器会进行登录拦截

image-20230125222802749.png

进行重定向:

http://xxlssoserver.com:8080/xxl-sso-server/login?redirect_url=http://localhost:8081/xxl-sso-web-sample-springboot/

进入认证中心,进行认证:

http://127.0.0.1:8081/xxl-sso-web-sample-springboot/?xxl_sso_sessionid=1000_06a1984b96a244a5927cdae2596e79bb

登录后,会跳转到成功页面:

http://localhost:8081/xxl-sso-web-sample-springboot/?xxl_sso_sessionid=1000_4be8c6cdaaa149b394636921d0d07a7d

image-20230125222123785.png

【user】login success.

点击Logout 然后进行logout:

http://xxlssoserver.com:8080/xxl-sso-server/logout

然后就可以退出登录了。

从而跳转到登录页面:

http://localhost:8080/xxl-sso-server/login

image-20230125222250225.png

以上就是两套方案请求的过程。

可以看到徐雪里老师还是很厉害的!

目录
相关文章
|
算法 Java 应用服务中间件
cas5.3:CAS Server搭建
cas5.3:CAS Server搭建
1735 0
|
存储 监控 文件存储
存储之外,还有什么?云计算对象存储服务OSS深度洞察
存储之外,还有什么?云计算对象存储服务OSS深度洞察
1959 0
|
JSON 数据格式
okhttp3 模拟get、post(json参数传递,form表单提交)
本文是博主学习okhttp3 的记录,希望对大家有所帮助。
3646 0
|
11月前
|
机器学习/深度学习 人工智能 监控
别把模型当宠物养:从 CI/CD 到 MLOps 的工程化“成人礼”
别把模型当宠物养:从 CI/CD 到 MLOps 的工程化“成人礼”
733 163
|
数据可视化 Java API
Spring Boot与Swagger的集成
Spring Boot与Swagger的集成
1105 2
|
监控 安全 NoSQL
【SpringBoot】OAuth 2.0 授权码模式 + JWT 令牌自动续签 的终极落地指南,包含 深度技术细节、生产环境配置、安全加固方案 和 全链路监控
【SpringBoot】OAuth 2.0 授权码模式 + JWT 令牌自动续签 的终极落地指南,包含 深度技术细节、生产环境配置、安全加固方案 和 全链路监控
4215 1
|
Kubernetes Java Android开发
IDEA远程调试k8s容器里面的Java应用
IDEA远程调试k8s容器里面的Java应用
3919 0
IDEA远程调试k8s容器里面的Java应用
|
存储 安全 Java
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
1805 0
【SSO-CAS部署】安装部署单点登录组件CAS(5.3.x版本)
|
存储 缓存 监控
聊聊消息中心的设计与实现逻辑
消息通知的流程设计,在各个业务线中通过消息中心提供的接口方法,将不同场景下的消息内容提交到消息中心,消息中心进行统一维护管理,并根据消息的来源和去向,适配相应的推送逻辑。
1857 0
聊聊消息中心的设计与实现逻辑
|
设计模式 数据可视化 Java
如何在 IDEA 中设置类路径
在 IntelliJ IDEA 中设置类路径,可以通过项目结构配置或模块设置来添加所需的库和依赖。具体步骤包括打开项目结构对话框、选择模块、添加类路径等。
3288 18