前言

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

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

  1. 记录自己的学习过程
  2. 网上关于使用 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认证流程相关推荐

  1. SSO单点登录基于CAS架构封装 Memcached 实例

    2019独角兽企业重金招聘Python工程师标准>>> SSO认证中心是CAS整个应用架构的一个极其重要的关键点,必须满足如下两点要求: 1.高可用,不允许程序发生故障.如果认证中心 ...

  2. 重学 Java 设计模式:实战装饰器模式(SSO单点登录功能扩展,增加拦截用户访问方法范围场景)

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  3. SSO单点登录Spring-Security+CAS+使用手册.doc

    csdn地址: http://download.csdn.net/download/ddbbff2005/5299315 转载于:https://blog.51cto.com/2290337/1631 ...

  4. SSO单点登录原理详解

    本文主要对SSO单点登录与CAS.OAuth2.0两种授权协议的关系和原理进行详细说明. 1. 基础概念 术语解释 SSO-Single Sign On,单点登录 TGT-Ticket Grantin ...

  5. 手撸SSO单点登录(六)SSO单点退出原理

    目标 这一章节我们来一起学习,单点退出登录,是怎么让所有sso系统一起退出登录的. 视频详细讲解请见https://www.bilibili.com/video/BV14A4y1S7HP/ 时序图 当 ...

  6. JWT实战 Spring Security Oauth2整合JWT 整合SSO单点登录

    文章目录 一.JWT 1.1 什么是JWT 1.2 JWT组成 头部(header) 载荷(payload) 签名(signature) 如何应用 1.3 JJWT 快速开始 创建token toke ...

  7. jeesite实战(三十一)——SSO单点登录

    系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 SSO单点登录 系列文章目录 前言 一.背景 二.实现过程 1.SSO的配置 2.定义一个token接口 3.注意事项 ...

  8. 写了一个 SSO 单点登录的代码示例给胖友!

    发危~ " 摘要: 原创出处 http://www.iocoder.cn/Spring-Security/OAuth2-learning-sso/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1 ...

  9. java ssm 多租户_(十一)java B2B2C 源码 多级分销springmvc mybatis多租户电子商城系统- SSO单点登录之OAuth2.0登录流程(2)...

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

最新文章

  1. Sentinel Dashboard 中修改规则同步到 Nacos
  2. 石川es6课程---8、字符串
  3. 网络安全防护部署,升级支持IPv6
  4. python命令行tab补全_python命令行下按tab建补全的方法
  5. 利用Attribute扩展MVC的Title和Sitemap
  6. carbon安装win7 thinkpad x1_联想thinkpad x1 carbon 2017笔记本使用u启动u盘安装win7系统教程...
  7. 昆工c语言题库,昆明理工大学C语言期末统考试题
  8. MVC5 Action的view()直接输出字符串方式
  9. java判断读到末尾_Java Web入门之java--第一节 java 简介及开发环境安装
  10. 编程之美--高效率算出1的数目之扩展问题
  11. linux命名管道进程间通信,《Linux 进程间通信》命名管道:FIFO
  12. 学以致用——使用莱斯利矩阵模型预测蠵龟种群数量的演变(Demographics of the Loggerhead Sea Turtle using Leslie population model)
  13. 人工智能--状态空间问题求解方法
  14. 简单python代码讲解-【第一期】用pycharm来编写简单代码(python教程)
  15. ERP、SCM、CRM的区别和联系
  16. C++ rand的用法
  17. 把Android源码导入Android Studio进行调试
  18. PTA 7-10 古风排版
  19. iOS - 找出汉字拼音首字母
  20. Linux版本的 免费的人脸识别技术。

热门文章

  1. 【STC15系列】SYK-0806-A2S1 工业自动化控制之【12-步进电机精确定位】
  2. 星三角降压数控启动接线图
  3. 一个真实的故事--关于职业
  4. Ray- News Reader 和 ResNet
  5. 依靠追词获得百万流量之“什么是追词”
  6. 绝地求生游戏总显示服务器崩溃,绝地求生总是游戏崩溃怎么办_绝地求生游戏崩溃解决办法_绝地求生_我爱秘籍...
  7. 窝CDMA网络中移动IP接入Internet(转)
  8. 200smart_PLC如何实现可调频率可调占空比PWM输出
  9. 关于vue-router的历史模式和hash模式
  10. 方差分析的数学原理与公式讲解