【实战】从零搭建SSO单点登录服务器 - CAS认证流程
前言
因系统逐渐增多,各个业务系统间无法共享用户状态,每个系统都需要用户登录。这对于用户来说很不友好,于是需要搭建一个SSO单点登录服务器,来做统一的登录、注销。
写这个系列的文章有两个目的:
- 记录自己的学习过程
- 网上关于使用 Apereo CAS 来做单点登录的文章比较少,故想分享给大家
注:Apereo CAS文档及仓库参考为6.3.4
往期链接
- 什么是SSO?
- 什么是CAS?
一、CAS认证流程
通过前面的两篇文章已经了解到了什么是 SSO单点登录
以及什么是 CAS
,这篇文章主要是详细的描述CAS的认证流程。
tips:了解 CAS 认证流程最好的方式就是看官方文档
首次登录
首次登录的时序图如下所示(可能有点长,先大致过一遍,后面会有文字讲解)
首次登录的时序图解释
① 发起请求到 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 获取用户信息的
第二次登录
第二次登录是指第二次登录其它应用程序
第二次登录的时序图如下所示:
第二次登录时序图解释
① 发起请求到 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服务端发现当前用户已登录,返回相应的内容
二、总结
遇到这种流程复杂的项目,多看文档,多理解即可。
感谢看到最后,非常荣幸能够帮助到你~♥
【实战】从零搭建SSO单点登录服务器 - CAS认证流程相关推荐
- SSO单点登录基于CAS架构封装 Memcached 实例
2019独角兽企业重金招聘Python工程师标准>>> SSO认证中心是CAS整个应用架构的一个极其重要的关键点,必须满足如下两点要求: 1.高可用,不允许程序发生故障.如果认证中心 ...
- 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!
- SSO单点登录Spring-Security+CAS+使用手册.doc
csdn地址: http://download.csdn.net/download/ddbbff2005/5299315 转载于:https://blog.51cto.com/2290337/1631 ...
- SSO单点登录原理详解
本文主要对SSO单点登录与CAS.OAuth2.0两种授权协议的关系和原理进行详细说明. 1. 基础概念 术语解释 SSO-Single Sign On,单点登录 TGT-Ticket Grantin ...
- 手撸SSO单点登录(六)SSO单点退出原理
目标 这一章节我们来一起学习,单点退出登录,是怎么让所有sso系统一起退出登录的. 视频详细讲解请见https://www.bilibili.com/video/BV14A4y1S7HP/ 时序图 当 ...
- JWT实战 Spring Security Oauth2整合JWT 整合SSO单点登录
文章目录 一.JWT 1.1 什么是JWT 1.2 JWT组成 头部(header) 载荷(payload) 签名(signature) 如何应用 1.3 JJWT 快速开始 创建token toke ...
- jeesite实战(三十一)——SSO单点登录
系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 SSO单点登录 系列文章目录 前言 一.背景 二.实现过程 1.SSO的配置 2.定义一个token接口 3.注意事项 ...
- 写了一个 SSO 单点登录的代码示例给胖友!
发危~ " 摘要: 原创出处 http://www.iocoder.cn/Spring-Security/OAuth2-learning-sso/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1 ...
- java ssm 多租户_(十一)java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统- SSO单点登录之OAuth2.0登录流程(2)...
上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...
最新文章
- Sentinel Dashboard 中修改规则同步到 Nacos
- 石川es6课程---8、字符串
- 网络安全防护部署,升级支持IPv6
- python命令行tab补全_python命令行下按tab建补全的方法
- 利用Attribute扩展MVC的Title和Sitemap
- carbon安装win7 thinkpad x1_联想thinkpad x1 carbon 2017笔记本使用u启动u盘安装win7系统教程...
- 昆工c语言题库,昆明理工大学C语言期末统考试题
- MVC5 Action的view()直接输出字符串方式
- java判断读到末尾_Java Web入门之java--第一节 java 简介及开发环境安装
- 编程之美--高效率算出1的数目之扩展问题
- linux命名管道进程间通信,《Linux 进程间通信》命名管道:FIFO
- 学以致用——使用莱斯利矩阵模型预测蠵龟种群数量的演变(Demographics of the Loggerhead Sea Turtle using Leslie population model)
- 人工智能--状态空间问题求解方法
- 简单python代码讲解-【第一期】用pycharm来编写简单代码(python教程)
- ERP、SCM、CRM的区别和联系
- C++ rand的用法
- 把Android源码导入Android Studio进行调试
- PTA 7-10 古风排版
- iOS - 找出汉字拼音首字母
- Linux版本的 免费的人脸识别技术。
热门文章
- 【STC15系列】SYK-0806-A2S1 工业自动化控制之【12-步进电机精确定位】
- 星三角降压数控启动接线图
- 一个真实的故事--关于职业
- Ray- News Reader 和 ResNet
- 依靠追词获得百万流量之“什么是追词”
- 绝地求生游戏总显示服务器崩溃,绝地求生总是游戏崩溃怎么办_绝地求生游戏崩溃解决办法_绝地求生_我爱秘籍...
- 窝CDMA网络中移动IP接入Internet(转)
- 200smart_PLC如何实现可调频率可调占空比PWM输出
- 关于vue-router的历史模式和hash模式
- 方差分析的数学原理与公式讲解