iis7.5 发布网站/章鱼磁力链接引擎
关于其他前端常见登录实现+单点登录方案,请见「前端常见登录实现方案 + 单点登录方案
」
前沿
单点登录(SSO),英文全称为 Single Sign On。 SSO 是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互信任的应用系统。
一般同域的SSO,用共享session就可以实现了,常见于各微服务都是自己开发的情况。更普遍的场景是跨域集成的SSO,这时候一般采用标准的CAS方案。
IDP SSO 服务用于解决同一公司不同业务应用之间的身份认证问题,只需要登录一次,即可访问所有添加的应用。此服务可以涵盖用户在公有云和私有云中的双重需求。
几个名词
-
TGT: (Ticket Granting Ticket)这是CAS Server里保存的,用于认证用户已经在CAS登录过
-
TGC: (Ticket Granting Cookie)跟上面的TGT对应,是已经认证过的用户在浏览器里保存的cookie
-
ST: (Service Ticket)这是CAS Server发给应用服务器的凭证,应用服务器再用ST到CAS Server认证
-
Authentication: 【认证】即确认该用户的身份是他所声明的那个人
-
Authorization:【授权】即根据用户身份授予他访问特定资源的权限
CAS认证
Central Authentication Service简称CAS,是一种常见的B/S架构的SSO协议。和其他任何SSO协议一样,用户仅需登陆一次,访问其他应用则无需再次登陆。
CAS是一种仅用于Authentication【认证】的服务,它和OAuth/OIDC协议不一样,并不能作为一种Authorization【授权】的协议。
当前CAS协议包括CAS 1.0、CAS2.0、CAS3.0版本,这三个版本的认证流程基本类似。
👇 下面一个标准的CAS认证流程图:
大致流程:
当用户请求应用服务器提供的某个服务abc,如果没有登录过,那么会返回一个302,跳转到 cas/login?service=abc,在CAS登录后,又会302到abc?ticket=STxxxxx(这里abc就是前面service填的地址),应用服务器用这个ticket到CAS Server认证,如果OK的话,再一次302到abc,完成整个认证过程
IDP 全流程(前后端分离的场景)
现在web应用一般采用前后端分离的架构,通过ajax请求后端服务,这样会无法跳转回原来的静态页面,需要对原有的CAS流程的稍加改造,下面是一个基于CAS实现的IDP系统的完整流程。
👇 应用A 通过 IDP登录
👆 阐述 IDP 发起的单点登录流程:
- 用户访问应用A页面,如:http://a.com/item
- 应用A向A后端请求接口,如:http://a.com/api/item
- A后端检测登录状态,若该用户已登录直接跳至步骤(15. 正常访问),未登录则返回状态码403&跳转链接,如:http://idp.com
- 应用A携带 target_url 重定向到 IDP 登录页面,如:http://idp.com?callback=a.com/item
- 用户在IDP中输入 IDP 的登录手机号并请求验证码
- IDP前端向IDP后端服务请求验证码接口,如:http://idp.com/api/code
- IDP后端别用户手机发送验证码
- 用户填写验证码,并登录
- IDP前端向IDP后端服务请求登录接口,如:http://idp.com/api/session
- IDP后端认证通过后,会生成 TGC&ST,返回给IDP前端
- IDP前端 302 跳转到应用A页面到 SSO URL 地址 redirect_uri并携带ST,如:http://a.com/item?st=xxx
- 应用A页面通过url中的st向应用A后端去认证登录
- 应用A后端再去IDP后端认证登录状态,如:http://idp.com/profile?st
- IDP后端认证通过后,向应用A后端返回用户的信息
- 应用A后端拿到用户信息生成 Token并返回给应用A前端保存
- 最终,用户查看到之前访问的应用A前端,如:http://a.com/item
👇 IDP登录成功,应用B 通过 IDP直接登录
👆 阐述IDP登录成功,应用B 通过 IDP直接单点登录流程:
【大致步骤同应用A 通过 IDP登录,只是少了IDP登录认证的几步】
- 用户访问应用B页面,如:http://b.com/item
- 应用B向B后端请求接口,如:http://b.com/api/item
- B后端检测登录状态,若该用户已登录直接正常访问,未登录则返回状态码403&跳转链接,如:http://idp.com
- 应用B携带 target_url 重定向到 IDP 登录页面,如:http://idp.com?callback=b.com/item
- IDP前端通过session获取TGC向IDP后端服务换取ST,IDP后端认证通过后向IDP前端返回ST
- IDP前端 302 跳转到应用B页面到 SSO URL 地址 redirect_uri并携带ST,如:http://b.com/item?st=xxx
- 应用B页面通过url中的st向应用B后端去认证登录
- 应用B后端再去IDP后端认证登录状态,如:http://idp.com/profile?st
- IDP后端认证通过后,向应用B后端返回用户的信息
- 应用B后端拿到用户信息生成 Token并返回给应用B前端保存
- 最终,用户查看到之前访问的应用B前端,如:http://b.com/item
👇 应用退出登录,IDP退出,所有平台都退出登录
👆 阐述应用退出登录,IDP单点退出登录流程:
- 用户访问应用A页面,点击退出登录,如:http://a.com/logout
- 应用A向A后端请求退出登录接口,如:http://a.com/api/logout
- A后端向IDP后端发送退出登录请求,注销全部TGC&ST
- IDP后端向所有应用后端告知退出事件,如:http://a.com/callback、http://b.com/callback
小结
注意:我们需要对redirect_uri做部分定制并encoding
至此,基于CAS实现的前后端分离的SSO系统开发完毕。如果对流程有问题,欢迎大家讨论
相关文章:

单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」
关于其他前端常见登录实现单点登录方案,请见「前端常见登录实现方案 单点登录方案 」 前沿 单点登录(SSO),英文全称为 Single Sign On。 SSO 是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互…...

二叉树
目录 1翻转二叉树 2对称二叉树 3二叉树的深度 最大深度 最小深度 4二叉树的结点数量 完全二叉树的结点数量 5平衡二叉树 6 中序 后序求前序 二叉树结构体如下: struct freenode {int data;struct freenode *lchild, *rchild;//左孩子 右孩子 }T; 1翻转二…...

边缘计算:挑战与机遇的平衡艺术
前言 边缘计算作为云计算的补充,通过在数据源近处进行数据处理,已经成为实现物联网(IoT)、自动驾驶、智慧城市等应用的重要技术。然而,边缘计算的发展和普及也面临不少挑战,同时也带来了巨大的机遇。 方向…...

Windows11 Copilot助手开启教程(免费GPT-4)
Windows11上开启Copilot助手教程踩坑指南 Copilot介绍Copilot开启步骤1、更新系统2、更改语言和区域3、下载 ViVeTool 工具4、开启Copilot 使用 Copilot介绍 Windows Copilot 是 Windows 11 中的一个新功能,它可以让你与一个智能助理进行对话,获取信息&…...

【Golang入门教程】如何使用Goland创建并运行项目
自然语言处理的发展 文章目录 自然语言处理的发展**前言**创建新项目编辑运行/调试配置编写并运行代码总结强烈推荐专栏集锦写在最后 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站: 人工…...

鸿蒙开发实战-手写文心一言AI对话APP
运行环境 (后面附有API9版本,可修改后在HarmonyOS4设备上运行) DAYU200:4.0.10.16 SDK:4.0.10.15 IDE:4.0.600 在DAYU200:4.0.10.16上运行 一、创建应用 1.点击File->new File->Create Progect 2.选择模版…...

鸿蒙常用UI效果及一些处理方式总结
前言: DevEco Studio版本:4.0.0.600 详细使用介绍 1、Text的一些常用设置 Text(this.message).fontSize(50)//字体大小.fontColor(Color.White)//字体颜色.fontWeight(FontWeight.Bold)//字体加粗.backgroundColor(Color.Black)//背景颜色.fontStyle(…...

dataGrip连接数据库mysql和intersystems的iris
intersystems公司的产品iris是cache的升级版本,目前绝大多数数据库工具都没法连接这个数据库 datagrip下载地址 https://download-cdn.jetbrains.com.cn/datagrip/datagrip-2023.3.3.exe 选择对应的数据库产品类型 新建数据库资源连接 填上对应的数据库连接和账…...

【51单片机】点亮第一个LED灯
目录 点亮第一个LED灯单片机 GPIO 介绍GPIO 概念GPIO 结构 LED简介软件设计点亮D1指示灯LED流水灯 橙色 点亮第一个LED灯 单片机 GPIO 介绍 GPIO 概念 GPIO(general purpose intput output) 是通用输入输出端口的简称, 可以通过软件来控制…...

ubuntu20.04 格式化 硬盘 扩展硬盘
如何在 Ubuntu 22.04 LTS 上安装分区编辑器 GParted?_gparted安装-CSDN博客 sudo apt install gparted 步骤5:启动GParted 安装完成后,您可以在应用程序菜单中找到GParted。点击它以启动分区编辑器。 通过以上步骤,您可以在Ubun…...

openssl3.2/test/certs - 031 - purpose variants: clientAuth
文章目录 openssl3.2/test/certs - 031 - purpose variants: clientAuth概述笔记END openssl3.2/test/certs - 031 - purpose variants: clientAuth 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! \file my_openssl_linux_log_doc_031.txt \note openssl3.2/tes…...

ubuntu下docker卸载和重新安装
卸载:步骤一:停止Docker服务 首先,我们需要停止正在运行的Docker服务。打开终端,执行以下命令: sudo systemctl stop docker 步骤二:删除Docker安装包 接下来,我们需要删除已经安装的Docker软件…...

搭建k8s集群实战(一)系统设置
1、架构及服务 Kubernetes作为容器集群系统,通过健康检查重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。 …...

go-carbon v2.3.6 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
carbon 是一个轻量级、语义化、对开发者友好的 golang 时间处理库,支持链式调用。 目前已被 awesome-go 收录,如果您觉得不错,请给个 star 吧 github.com/golang-module/carbon gitee.com/golang-module/carbon 安装使用 Golang 版本大于…...

力扣2859-计算k置位下标对应元素的和
计算K置位下标对应元素的和 题目链接 解题思路 对每个下标进行位运算,求得二进制位1的个数,与k进行比较如果相等,证明该元素符合题目要求的值对所有满足要求的值进行累加即可 class Solution { public:int sumIndicesWithKSetBits(vector<…...

[计算机提升] 切换(域)用户
4.14 切换(域)用户 4.14.1 为什么要切换用户 在Windows系统中,切换用户的主要目的是为了实现多用户共享同一台计算机的便利和安全。当多个人需要使用同一台计算机时,每个人可以登录自己的用户账户,这样可以避免互相干扰和混淆数据。 以下是…...

蓝桥杯练习题dfs与bfs
📑前言 本文主要是【算法】——dfs与bfs的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句ÿ…...

软件游戏提示msvcp140.dll丢失的解决方法,全面分析msvcp140.dll文件
msvcp140.dll是Microsoft Visual C 2015 Redistributable的一部分,它包含了许多用于运行程序的函数和类库。当这个文件丢失或损坏时,依赖于该组件的应用程序可能无法正常启动,系统会弹出错误提示,告知用户找不到msvcp140.dll文件。…...

LandrayOA内存调优 / JAVA内存调优 / Tomcat web.xml 超时时间调优实战
目录 一、背景说明 二、LandrayOA / Tomcat 内存调优 2.1 \win64\tomcat\conf\web.xml 文件调优 2.2 \win64\tomcat\bin\catalina64.bat 文件调优 一、背景说明 随着系统的使用时间越来越长,数据量越多,发现系统的有些功能越来越慢&…...

免费SSL数字证书申请,免费数字证书使用教程
为什么要使用SSL数字证书? 1. 数据加密(SSL数字证书通过使用加密算法对传输的数据进行加密,保证数据在传输过程中不被篡改。) 2. 使用了SSL数字证书,浏览器中不会显示不安全,小程序开通,给你的…...

深入理解Flutter中的GlobalKey与LocalKey(ValueKey、ObjectKey、UniqueKey)及其使用方法
在Flutter中,Key是一个非常重要的概念,它用于标识和管理Widget。GlobalKey和LocalKey是Key的两个主要子类,而ValueKey、ObjectKey和UniqueKey则是LocalKey的具体实现。在本文中,我们将深入介绍这些关键概念以及它们在Flutter中的使…...

linux命令学习
sudu和su的区别:sudo 命令需要输入当前用户的密码,su 命令需要输入 root 用户的密码。当灭有root账户时,可以使用sudo su进入超级用户模式。创建root账户:sudo passwd rootcentos使用yum,ubuntu使用apt来安装。默认的 …...

核桃的数量---蓝桥杯
思路: 题目所代表的意思就是a,b,c这三个必须是核桃数量的因子,即a,b,c三个的最小公倍数 #include <iostream> #include <algorithm> using namespace std; // int main() { int a,b,c;cin>>a>>b>>c;int da*b/__gcd(a,b…...

进程通信与socket编程实践之猜数字小游戏
socket是实现进程通信的一种重要方式,本文将通过socket编程实现服务器进程与客户端进程之间的通信,并在通信之外实现猜数字的小游戏。 1. 设计思路 本文设计的C/S结构的猜数字游戏功能如下:服务器端自动生成一个1-100之间的随机数字&#x…...

AcWing 1241. 外卖店优先级(复杂模拟思路 + 代码详解)
[题目概述] “饱了么”外卖系统中维护着 N 家外卖店,编号 1∼N。 每家外卖店都有一个优先级,初始时 (0 时刻) 优先级都为 0。 每经过 1 个时间单位,如果外卖店没有订单,则优先级会减少 1,最低减到 0;而如果…...

查询文件hash值
查询文件hash值 1 Windows 查询文件hash值1.1 certutil -hashfile 文件名 2 Linux 环境查询文件hash值2.1 sha256sum 文件名2.2 md5sum 文件名 1 Windows 查询文件hash值 在某些环境要对比两个文件是否完全一致 1.1 certutil -hashfile 文件名 certutil -hashfile C:\Users\…...

[docker] Docker资源管理
一、docker资源控制 Docker通过Cgroup 来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。Caroup 是ControlGroups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如…...

不就业,纯兴趣,应该自学C#还是JAVA?
不就业,纯兴趣,应该自学C#还是JAVA? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「JAVA的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家ÿ…...

【Go面试向】defer与time.sleep初探
【Go面试向】defer与time.sleep初探 大家好 我是寸铁👊 总结了一篇defer传参与time.sleep初探的文章✨ 喜欢的小伙伴可以点点关注 💝 请大家看下面这段代码,看运行结果会出现什么,为什么? 问题 demo package mainim…...

fpga外置flash程序烧录流程
Fpga外置FLASH程序烧录流程: step1: 打开vivado2019.2软件,找到hardware manager选项,进入该功能界面; Step2: 确定连接状态,当JTAG正确连接到板卡的调试插针后,会在状态窗口显示…...