cas单点登录流程揭密

前言

前几篇文章,经过大篇幅讲解了cas整合以及Cookie和Session。
springboot+vue集成cas单点登录最详细避坑版讲解
关于cookie和session的直观讲解(一)
关于cookie和session的直观讲解(二)
那么,接下来,我们就结合起来一起实战看看。

cas基础原理

在这里插入图片描述
就这几步。

下边令牌的概念,记住这几个东西的作用。

  • TGT:Ticket Granted Ticket(俗称大令牌,或者说票根,他可以签发ST)

  • TGC:Ticket Granted Cookie(cookie中的value),存在Cookie中,根据他可以找到TGT。

  • ST:Service Ticket (小令牌),是TGT生成的,默认是用一次就失效了。也就是上面数字3处的ticket值。

实操

准备条件

  • 一个前端页面,作用是最后经过一系列的操作,定向到这个页面,并显示用户名;
  • 一个springboot整合cas客户端的后端;
  • cas服务端,用tomcat启动。

未登录,第一次请求

请求详细图:

不着急研究,先看完下边再回来看。在这里插入图片描述

  1. 三角图第一、二、三步,请求被重定向到cas登录

    首先我们访问后端接口:http://192.168.2.189:8010/lsdb-api/redirectToFrontend
    在这里插入图片描述
    看看浏览器做了什么?

    访问这个接口,一定是被cas拦截器拦截并且验证的,没有登录,那就重定向到cas服务端登录,输入账号密码之后,认证成功。
    在这里插入图片描述

    可以看到,登录成功了,确实响应了一个TGC令牌,而且cas这个Cookie的path设置的是/cas/,也就是说,只有访问这个地址(cas服务端)才会携带这个Cookie。
    此时,你的浏览器已经有了这个TGC令牌的Cookie。
    为了模拟,我们可以将后端改个端口,再用jar启动一份,这样在我们访问这个新的后端端口是,这个后端是没有Session的,所以,一定会去cas服务端认证,为什么不跳转登录页面,因为Cookie中有TGC。
    在这里插入图片描述
    当cas客户端拦截器将请求重定向到/cas/login时,浏览器发现path含有/cas/,于是就将TGC这个Cookie也带上了,这样服务端直接拿这个TGC去校验。
    在这里插入图片描述
    发现TGC有对应的TGT,就继续下边的步骤通过了。

  2. 三角图第四、五步,重定向请求后端地址并验证ticket
    在这里插入图片描述
    这里可以看出,cas服务端重定向到上个图响应的Location地址,也就是携带ticket的地址,同时cas客户端响应了一个JSESSIONID,说白了就是在获取Session的时候设置的一个Cookie,就相当于Sessionid,通过它能找到Session,这个Session里保存有用户登录状态,而且path设置的是/,这就意味着本次浏览器会话都会携带。
    可能有人说,我怎么没看见第五步去cas验证票据的访问,前边的请求图上确实没显示请求cas的地址,这是因为验证是cas客户端直接拿到ticket去访问cas服务端接口,验证结果是通过接口返回,并不是重定向,跟浏览器没关系,所以浏览器上并不会显示,验证也很简单,只需要把下边的cas验证地址改错,就能发现后端报错
    在这里插入图片描述

  3. 三角图第六步,cas服务端返回用户信息给cas客户端
    通过上边一个图可以看出,验证通过之后,响应了一个带jsessionid的地址,那么,这里自然也会重定向到这个地址,当访问这个地址的时候,因为携带了jsessionid,那么就会cas客户端就会通过jsessionid获取到Session,从而获得登陆状态,直接正常请求接口,执行接口逻辑即可。
    在这里插入图片描述
    可以看到,终于是正常请求我们自己写的接口,并且重定向到8081的前端页面。

登录之后,第二次请求

第二次登录就简单多了,因为已经登陆了,我们在访问cas客户端或者前端地址都会携带Cookie,这样,后端通过Cookie就能获取到Session,这样就直接代表已登录,直接访问了。
在这里插入图片描述
Cookie的值JSESSIONID都是一样的,这样,我们就能把前边了解的session和cookie知识串联起来,在实际上看到作用和效果了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/54050.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构修炼——顺序表和链表的OJ题练习

目录 一、顺序表相关OJ题1 移除元素题目解析 2 合并两个有序数组题目解析 二、链表相关OJ题1 移除链表元素题目解析 2 反转链表题目解析 3 链表的中间结点题目解析 4 合并两个有序链表题目解析 5 链表的回文结构题目解析 6 相交链表题目解析 7 环形链表的判断题目解析 8 环形链…

OCR 通用端到端模型GOT

摘要 在人工智能领域,光学字符识别(OCR)技术已经取得了显著的进展。随着技术的不断进步,我们正迈向OCR 2.0时代。本文将介绍由Vary团队开发的通用端到端模型GOT,这一模型在OCR领域具有革命性的潜力。 论文概览 论文…

水滴式多功能粉碎机:粉碎中草药的好帮手

水滴式中草药粉碎机,顾名思义,其设计灵感源自自然界中水滴的柔和与力量。它摒弃了传统粉碎机粗犷的粉碎方式,采用低速研磨技术,模拟水滴穿透岩石的细腻与持久,对中草药进行温和而深入的粉碎。这种技术不仅保留了药材中…

Unreal游戏初始化流程

前言 本文主要是总结Unreal在游戏启动时的初始化流程,包括讨论PIE和Standalone的区别,避免把一些初始化逻辑放在不合适的位置,比如我希望在所有Actor BeginPlay后执行某个逻辑,那我如果把它放在Subsystem的initialize中显然就会搞…

初阶数据结构【TOP】- 11.普通二叉树的介绍 - 1. (细致,保姆~~!)

文章目录 前言一、普通二叉树的链式结构二、 造树三、普通二叉树的遍历四、遍历完整代码五、总结 前言 本篇文章笔者将会对普通二叉树部分进行细致的讲解 , 本篇主要包括以下内容: 二叉树链式结构的介绍 ,二叉树的遍历. 笔者会一步一步分析带学者领略递归的美好~~ 一、普通二叉…

DPO: Direct Preference Optimization 介绍

DPO 是 RLHF 的屌丝版本,RLHF 需要加载 4 个模型(2个推理,2个训练),DPO 只需要加载 2 个模型(1个推理,一个训练)。 RLHF: DPO: DPO 原理 DPO 的本质是监督对…

YoloV10 训练自己的数据集(推理,转化,C#部署)

目录 一、下载 三、开始训练 train.py detect.py export.py 超参数都在这个路径下 四、C#读取yolov10模型进行部署推理 如下程序是用来配置openvino 配置好引用后就可以生成dll了 再创建一个控件,作为显示 net framework 4.8版本的 再nuget工具箱里下载 …

价值流与核心理论框架对比解析:企业业务架构优化的全景指南

企业架构优化中的理论框架选择 随着数字化转型和全球竞争的加剧,企业管理者越来越意识到优化业务流程以提升竞争力的重要性。然而,在众多优化方法中,企业如何选择最适合自己的理论框架成为一大挑战。由The Open Group发布的《价值流指南》系…

密码学基础--ECDSA算法入门

目录 1.ECDSA签名长度的疑惑 2.ECDSA原理 2.1 生成签名 2.2 验签过程 2.3 签名编码问题 3.小结 1.ECDSA签名长度的疑惑 我们来看看ECDSA签名长什么样子,使用MuscleV02自动生成密钥对,并对message"0x11223344”进行签名,结果如下&a…

Java的衍生生态有哪些?恐怖如斯的JAVA

Java的衍生生态极其丰富,涵盖了多个层面和领域。以下是Java衍生生态的一些主要方面: 1. 开源工具 开发工具:如Eclipse,这是一款非常优秀的Java IDE工具,支持Java以及其他语言的代码编写。Spring官方还基于Eclipse开发…

Golang开发之路

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

混合整数规划及其MATLAB实现

目录 引言 混合整数规划的基本模型 混合整数规划的求解方法 MATLAB中的混合整数规划实现 示例:多变量系统的混合整数规划 表格总结:混合整数规划的求解方法与适用场景 结论 引言 混合整数规划(Mixed Integer Programming, MIP&#xf…

多线程学习篇二:Thread常见方法

1. 常见方法 方法名 static 功能说明 注意点 start() 启动一个新线程,在新线程里面运行run方法 start 方法只是让线程进入就绪,里面代码不一定立刻运行(CPU 的时间片还没分给它)。每个线程对象的 start 方法只能调用一次,如果调用了多…

【Hadoop|MapReduce篇】MapReduce概述

1. MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 2. Map…

【绿盟科技盟管家-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

linux 最简单配置免密登录

需求:两台服务器互信登录需要拉起对端服务 ip: 192.168.1.133 192.168.1.137 一、配置主机hosts,IP及主机名,两台都需要 二、192.168.1.137服务器,生成密钥 ssh-keygen -t rsa三、追加到文件 ~/.ssh/authorized_key…

2024年第二届《英语世界》杯全国大学生英语听力大赛

下周开考! 一、主办单位 商务印书馆《英语世界》杂志社 二、时间安排 赛事报名时间:即日起-2024年11月15日 正式比赛阶段:第一场:2024年9月22日10:00-22:00 第二场:2024年10月27日10:00-22:00 第三场&#xff1…

QT::QComboBox自定义左击事件信号

因为QComboBox没有自定义的clink信号&#xff0c;所以自己新建一个MyComBox类继承QComboBox&#xff0c;并且添加自定义的左击信号&#xff0c;以及使用该信号连接一个槽函数 mycombobox.h #ifndef MYCOMBOBOX_H #define MYCOMBOBOX_H#include <QComboBox> #include &l…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切&#xff08;ROI&#xff09;功能&#xff08;C语言&#xff09; Baumer工业相机Baumer工业相机的图像剪切&#xff08;ROI&#xff09;功能的技术背景CameraExplorer如何使用图像剪切&#xff08;ROI&#xff0…

复旦:EoT下Muti-agentllm曾带给我的启发

结合最近的一些经历&#xff0c;回忆起很早之前探索Agent时阅读过的一篇自来复旦/NUS/上海AI Lab的泛CoT框架思想论文&#xff0c;文中提出了一种名为“思想交换”&#xff08;Exchange-of-Thought, EoT&#xff09;的新框架&#xff0c;该框架允许在问题解决过程中进行跨模型交…