【实战】从零搭建SSO单点登录服务器 - CAS认证流程

2023-05-16

4679233.png

前言

因系统逐渐增多,各个业务系统间无法共享用户状态,每个系统都需要用户登录。这对于用户来说很不友好,于是需要搭建一个SSO单点登录服务器,来做统一的登录、注销。

写这个系列的文章有两个目的:

  1. 记录自己的学习过程
  2. 网上关于使用 Apereo CAS 来做单点登录的文章比较少,故想分享给大家
    注:Apereo CAS文档及仓库参考为6.3.4

往期链接

  • 什么是SSO?
  • 什么是CAS?

一、CAS认证流程

通过前面的两篇文章已经了解到了什么是 SSO单点登录 以及什么是 CAS,这篇文章主要是详细的描述CAS的认证流程。

tips:了解 CAS 认证流程最好的方式就是看官方文档

首次登录

首次登录的时序图如下所示(可能有点长,先大致过一遍,后面会有文字讲解)

image.png

首次登录的时序图解释

① 发起请求到 app.example.com ,App对应的服务端发现当前用户未登录,重定向至 CAS 服务地址 cas.example.com?service=xxx(注意:url中携带 service=xxx ,即是从哪个应用程序过来的)
② CAS 服务器发现当前用户未登录,返回登录页面
③ CAS输入正确的账号密码后,CAS 向Cookie中写入 TGT, 并重定向到之前的服务地址 app.example.com?ticket=xxx(注意:url中携带CAS服务端颁发的 ticket
④ 应用程序服务端接收到参数含有 ticket 的请求,则用 ticket 向 CAS 服务端换取用户信息并写入当前会话,再重定向至 app.example.com
⑤ 应用层序服务端发现当前用户已登录,返回相应的内容

名词解释(通俗易懂)
TGT(Ticket Granting Ticket):CAS 服务端用来标识当前用户是否登陆过的
ticket:其它应用程序用来向 CAS 获取用户信息的

第二次登录

第二次登录是指第二次登录其它应用程序

第二次登录的时序图如下所示

cas_flow_diagram1.png

第二次登录时序图解释

① 发起请求到 app2.example.com,App2对应的服务端发现当前用户未登录,重定向到 CAS 服务地址 cas.example.com?service=xxx (注意:与首次登录一致,url中同样携带 service=xxx ,即是从哪个应用程序过来的)
② 因前面再 CAS 中登陆过,所以在请求 cas.example.com?service=xxx 时,Cookie中会含有 TGT。CAS 服务通过 TGT 得知用户已登录,则重定向至 app2.example.com?ticket=xxx(注意:与首次登录一致,url中同样携带CAS服务端颁发的 ticket
③ 应用程序2服务端接收到参数含有 ticket 的请求,则用 ticket 向 CAS 服务端换取用户信息并写入当前会话,再重定向至 app2.example.com
④ 应用层序2服务端发现当前用户已登录,返回相应的内容

二、总结

遇到这种流程复杂的项目,多看文档,多理解即可。

感谢看到最后,非常荣幸能够帮助到你~♥

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【实战】从零搭建SSO单点登录服务器 - CAS认证流程 的相关文章

  • 神经网络中Batch和Epoch之间的区别

    来自蜂口知道公众号 随机梯度下降法是一种具有大量超参数的学习算法 通常会使初学者感到困惑的两个超参数 Batch大小和Epoch数量 它们都是整数值 xff0c 看起来做的事情是一样的 在这篇文章中 xff0c 您将发现随机梯度下降中Bat
  • dubbo+springMVC消费端报错classNotFound

    首先 xff0c 说明一下我的错误原因 xff1a 是因为provider端打jar包方式的错误 导致的 xff0c 如果你已经将这种错误可能排除了 xff0c 就不用浪费时间看我啰嗦了 maven基础比较弱 xff0c 之后系统学一下吧
  • kubernetes HPA-超详细中文官方文档

    HPA全称是Horizontal Pod Autoscaler xff0c 翻译成中文是POD水平自动伸缩 xff0c 以下都会用HPA代替Horizontal Pod Autoscaler xff0c HPA可以基于CPU利用率对repl
  • openstack安装和使用

    前言 本篇文章会介绍openstack的安装 openstack各组件的配置和功能 还会演示openstack云主机的创建流程 xff0c 整篇文章花费一天时间完成 xff0c 万字长文 xff0c 需要的可以关注 xff0c 相互学习 x
  • IMU预积分及残差雅克比计算

    前段时间推了泡泡机器人邱笑晨博士的IMU预积分公式 收获很大 再看到VIORB的时候 大都用的这一套公式 后再看VINS的时候 VINS用的是连续时间的预积分 看一些大佬的博客 说代码里写的是离散时间的 这里将所看到的做一下整理 要求的是
  • PyUIC报错Error: one input ui-file must be specified

    利用PyUIC将 ui转为 py报错 xff1a Error one input ui file must be specified 解决办法 xff1a 找到file gt setting gt tools gt Extenal Tool
  • 提取指定字符串后面的值----Python正则表达式

    例如 xff1a 从log文件中解析出shippingSn的值 span class token keyword import span re str1 span class token operator 61 span span clas
  • Python3离线安装requests模块

    requests模块的依赖包检查 在可以上网且已安装python的机器上检查requests模块需要哪些依赖包 xff0c 要是没有依赖包 xff0c 直接下载一个直接安装最好 在CMD命令窗口中输入 pip show requests 发
  • 树莓派zero w 安装python3.6

    在树莓派Raspbian系统上安装 conda 环境 但是 xff0c 在安装使用了一段时间后 xff0c 发现使用 Miniconda 的 armv7l 版本 xff0c python 只有 3 4 的版本 xff0c 而且比如安装 ip
  • 树莓派编译安装opencv出错:fatal error:boostdesc_bgm.i: No such file or directory

    opencv contrib modules xfeatures2d src boostdesc cpp 673 20 fatal error boostdesc bgm i No such file or directory 解决方式 x
  • 【PTC Thingworx(一)】申请30天免费试用

    1 进入Thingworx网站https developer thingworx com 2 选择Free Trials 3 完善信息申请30天试用 4 申请成功界面 5 点击Start Server开始服务 xff0c 并点击Launch
  • 树莓派Buster系统快速安装opencv(二)

    完成上一篇树莓派Buster系统编译安装opencv 一 xff09 中的配置wifi 换源 修改树莓默认Python版本 安装工具包等内容后 xff0c 开始本教程内容 1 下载opencv安装包 从https www piwheels
  • monkeyDev使用及初次使用问题的解决方法

    安装 1 下载monkeyDev git clone https github com AloneMonkey MonkeyDev git 2 进入bin文件夹执行安装命令 cd MonkeyDev bin sudo md install
  • node-red mysql节点报错“Pool is Closed”

    进入nodejs安装目录 执行以下命令 npm install mysql 重启node red pm2 restart all 问题解决
  • Windows搭建TensorFlow GPU环境

    一 CUDA安装 CUDA xff08 Compute Unified Device Architecture xff09 xff0c 是显卡厂商NVIDIA推出的运算平台 CUDA 是一种由NVIDIA推出的通用并行计算架构 xff0c
  • FTP下载报错:550 Failed to open file

    Filezilla报错 xff1a 550 Failed to open file xff0c 如下图 原因 xff1a 上传文件权限问题 解决办法 xff1a 修改vsftpd conf的虚拟用户权限配置 cd span class to
  • kubeadm flannel 网络问题

    环境 xff1a 节点 1 xff1a 192 168 60 100 节点 2 xff1a 192 168 60 101 节点 3 xff1a 192 168 60 102 虚拟机自建了一套kubeadm集群 xff0c 刚开始好好的 xf
  • Win10下安装opendr

    踩坑过程 xff1a 正常pip install opendr 报错 xff1a 下载Cython失败 解决 xff1a 去PYPI上找轮子 xff0c 离线安装Cython 问题 xff1a 这次库都下载好了 xff0c 但是安装时报错
  • Ubuntu18.04安装OpenCV4.2.0(不包含Python)

    之前写的项目安装教程节选Opencv部分 当时用的英文 有时间我再转中文 Install dependant envs span class token function sudo span span class token functio
  • Ubuntu18.04设置开机自启脚本

    网上参考Ubuntu18 04 开机自启动脚本之后并没成功 xff0c 各种搜索后发现博文内容都一样 xff0c 说什么亲测可行 xff0c 但根本没解决下面这个问题 span class token function sudo span

随机推荐

  • Linux 网卡VLAN、BOND配置

    此篇是在转载博文上做修订 原文内容有些地方不妥当 Redhat Linux的网络配置 xff0c 基本上是通过修改几个配置文件来实现的 xff0c 虽然也可以用ifconfig来设置IP xff0c 用route来配置默认网关 xff0c
  • WinSCP之Windows与Windows之间传输文件

    WinSCP之Windows与Windows之间传输文件 方法 xff1a WinSCP 43 OpenSSH xff08 1 xff09 在需要远程访问的windows电脑上安装OpenSSH的server xff1a 具体步骤如下 xf
  • C++类和对象——继承

    目录 1 继承的基本语法 2 继承方式 3 继承中的对象模型 4 继承中构造和析构顺序 5 继承同名成员处理方式 6 继承同名静态成员处理方式 7 多继承语法 8 菱形继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系 xff0
  • Guava-Collections2源码解析

    构造器 private Collections2 私有构造器 xff0c 也没有静态构造器 xff0c 所以可以很明确它是一个纯工具类了 功能方法 filter过滤方法 传入一个带过滤的容器 xff0c 和一个实现过滤规则的函数类 xff0
  • QGC 汉化

    效果如下 一 xff0c pro文件修改 不添加 lupdate xff0c qml文件中的 qstr 无法识别 二 xff0c 生成 ts 文件 三 xff0c 利用 Qt 自带的 linguist软件 加载ts文件 翻译后 生成 qm
  • QGC android版 ubuntu编译

    一 xff0c 环境搭建 参照 xff1a https blog csdn net foxbryant article details 51813685 1 软件安装 Ubuntu 版本 xff1a 14 04 Qt xff1a 5 7 1
  • QGC 增加禁飞区显示功能

    效果 xff1a 本功能客只实现地面站上禁飞区静态展示 xff0c 具体限制需飞控端实现 步骤 xff1a 下载禁飞区数据 处理禁飞区数据 禁飞区数据 导入sqlite数据库 初始化读取禁飞区数据 绘制 打包 1 xff0c 下载禁飞区数据
  • Tx2 通过内核编译来获取ttyUSB* 以及ttyACM*的设备名

    最近由于学校实验室准备参加ICRA的DJI AI Challenge xff0c 所以我在使用TX2跑ROS 我用的是ubuntu 16 04 ros kinetic版本 然后遇到了一些问题 再插上通信串口之后usb并没有反应 通过lsus
  • Tx2上运行rplidar A2

    首先 xff0c 有一个比较坑的地方 xff0c Tx2默认情况下是没有rplidar A2的这个驱动的 xff0c 需要我们自己进行内核编译安装 具体安装方法可以看我的Tx2 通过内核编译来获取ttyUSB 以及ttyACM 的设备名 的
  • TX2安装caffe(从头开始,最全教程)

    xff08 大二时记录在有道云笔记的记录 xff0c 现在开始搬运 xff09 准备工作 xff1a 1 刷机 第一次使用TX2 xff0c 那是需要刷机的 由于TX2自带的ubuntu系统比较老 xff0c 不适合我们接下来的工作 xff
  • Ubuntu下C/C++网络编程基本:socket实现tcp的例子

    1 说明 待编辑 2 代码 test server h ifndef INCLUDE TEST SERVER H define INCLUDE TEST SERVER H include lt unistd h gt include lt
  • mavros常用消息类型表

    mavros订阅消息 xff1a global position 订阅GPS数据 消息名称 xff1a mavros global position global 类型名称 xff1a sensor msgs NavSatFix h 类型所
  • 记一次美团校招内推笔试经历

    2019年4月23日星期二晚上七点 这天刚好项目上生产我负责留守做远程技术支持 留下的还有个重要的原因就是今晚我有一个美团的笔试 七点笔试准时开始 信心满满打开网页地址 美团用的是赛码网来做的笔试题库 xff0c 再次之前收到了邀请码输入进
  • git 推送出现 "fatal: The remote end hung up unexpectedly" 解决方案

    在使用git更新或提交 项目时候出现 34 fatal The remote end hung up unexpectedly 34 原因是推送的文件太大 那就简单了 xff0c 要么是缓存不够 xff0c 要么是网络不行 xff0c 要么
  • 双色球规则及c++实现代码

    双色球规则 xff1a 第一章 总 则 第一条 本规则依据财政部 彩票发行与销售管理暂行规定 和 中国福利彩票 xff08 电脑型 xff09 联合发行与销售管理暂行办法 xff08 以下简称 管理办法 xff09 制定 第二条 中国福利彩
  • 卡尔曼滤波以及Matlab实现_参考书籍_核心剖析_经验分享_EKF(1)

    版权声明 xff1a 本文为博主原创文章 xff0c 未经博主允许不得转载 https mp csdn net mdeditor 1 前言 首先 xff0c 关于卡尔曼滤波理论的定义 种类 算法实现过程步骤以及相关例子方面 xff0c 博主
  • 用JAVA实现MapReduce

    这里的MapReduce实现的是分词计数 pom xml文件 版本号需要跟你自己安装的hadoop版本号一样 hadoop commonhadoop hdfshadoop authhadoop clienthadoop mapreduce
  • 高通导航器软件开发包使用指南(10)

    高通导航器软件开发包使用指南 xff08 10 xff09 8 9位置控制参数8 10状态 机器 进程8 11高度 估算器 图8 12最大加速度偏差8 13电压监控图8 14 att control params xff08 附件控制参数
  • VTK 多平面重建(MPR)及三维切片显示

    在此之前翻阅很多资料 爬过很多的坑 花费不少时间 xff0c 终于还是完成了 xff01 虽然实现地很简单 xff0c 但是大体功能是实现了 后面需要完善功能的话 xff0c 可以用qt与vtk结合开发 MPR MPR multi plan
  • 【实战】从零搭建SSO单点登录服务器 - CAS认证流程

    前言 因系统逐渐增多 xff0c 各个业务系统间无法共享用户状态 xff0c 每个系统都需要用户登录 这对于用户来说很不友好 xff0c 于是需要搭建一个SSO单点登录服务器 xff0c 来做统一的登录 注销 写这个系列的文章有两个目的 x