简述CAS单点登录的实现原理

article/2025/9/3 14:05:51

CAS

CAS(Central Authentication Service)单点登录系统是一种常见的身份验证和授权解决方案,它可以让用户在一个认证中心(CAS服务器)上登录,然后使用此登录信息访问多个应用程序而无需再次登录。

先了解几个名词:

  • TGC:(Ticket-granting Cookie),存放 SSO 用户身份凭据的 Cookie,类似 JSESSIONID。
  • TGT:(Ticket Granting Ticket),在 SSO 中标识一位用户,类似 Session。
  • ST:(Service Ticket),作为一个参数跟在 url 后面, 代表 CAS 为某一用户访问 CAS 客户端签发的凭据。
    The TGT (Ticket Granting Ticket), stored in the TGC cookie, represents a SSO session for a user. The ST (Service Ticket), transmitted as a GET parameter in urls, stands for the access granted by the CAS server to the CASified application for a specific user.

登录时序图

红色字体是我添加的翻译 ,可能不够准确,仅供参考
官网提供的时序图

首次认证流程

按上述步骤启动 CAS 相关应用后,打开浏览器,访问 https://localhost:9443/sample/,输入口令完成登录,在 Fiddler 中过滤无关请求,需要学习的请求如图。
CAS认证流程

  1. 序号 930,第一次访问 https://localhost:9443/sample/,会经过 CAS 提供的过滤器 org.jasig.cas.client.authentication.AuthenticationFilter,过滤器判断到当前用户没有登录,将请求重定向到认证中心,如图;
    CAS认证--重定向到 CAS 服务器

    重定向的地址是在过滤器参数中配置的 casServerLoginUrlservice 参数值则是过滤器参数中配置的 serverName,即认证后要跳转的地址。

  2. 序号 932,CAS 服务器接收到登录请求,返回登录页面;
    CAS登录页面

  3. 序号 956,用户输入口令后提交登录,CAS 服务器验证用户名密码是否有效(这里使用静态认证),如图;
    CAS 认证--登录提交

    使用 POST 请求的方式提交登录表单,用户认证成功后,请求的响应码是 302,指示浏览器将请求重定向到最开始访问的地址。重定向的地址通过 querySpring 携带了一个 ticket 参数。同时会设置一个名为 TGC 的 Cookie,路径为 /cas/。下次访问 https://cas.server.com:8443 时会携带这个 Cookie,服务器可以根据这个 TGC,查找与之对应的 TGT,从而判断用户是否认证过,是否需要展示登录页面。TGT 与 TGC 的关系就像 SESSION 与 Cookie 中 JSESSIONID 的关系

  4. 序号 957,浏览器向 https://localhost:9443/sample/ 发起请求,请求携带 CAS 服务器签发的 STlocalhost:9443 在过滤器中获取到 ticket 值,通过 HTTP 请求的方式调用 CAS 服务验证该 ticket 是否有效,过滤器全称 org.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter ,验证方法在 org.jasig.cas.client.validation.AbstractUrlBasedTicketValidator#validate, 如图。
    validate

此时,CAS 服务器的日志如下图。
CAS 认证--ST 验证
localhost:9443 收到 CAS 服务器返回,知道用户合法,即可正常响应请求,展示页面,如图。
CAS 认证--客户端响应

  1. 序号 958,ST 验证通过后再次重定向是在 Cas30ProxyReceivingTicketValidationFilter 过滤器中使用了 redirectAfterValidation 参数(默认为 true),将其配置成 false 即可在验证用户后返回正常页面,如图。
    CAS 认证--重定向
    CAS认证--访问客户端

再次认证流程

第一次访问 localhost:9443 的步骤已梳理完成,保持用户在 SSO 的会话,尝试访问 localhost:7443,观察其流程。请求重定向到 CAS 服务器时,携带了值为 TGC 的 Cookie。CAS 服务器通过此 TGC 查找到对应的 TGT,判断到用户已经登录,便不再展示登录页面,即少了 CAS 服务器登录这个步骤,剩余步骤和首次登录一致,如图。
再次认证流程

CAS单点登录的实现原理

  1. 用户访问需要身份验证的应用程序,并尚未进行身份验证。

  2. 应用程序重定向用户到CAS服务器进行登录验证。

  3. CAS服务器检查用户的登录凭据,如果验证通过,则创建一个票据(ticket)。

  4. CAS服务器将票据发送回应用程序,并将用户重定向回应用程序。

  5. 应用程序接收票据,并将其发送回CAS服务器以进行验证。

  6. 如果票据有效,则CAS服务器返回身份验证成功的响应。

  7. 应用程序将用户身份验证信息保存在会话中,以便以后的访问。

  8. 如果用户尝试访问其他应用程序,则该应用程序将使用相同的步骤验证用户身份。

因此,CAS单点登录系统的主要思想是将用户身份验证过程与应用程序分离开来,使得用户只需进行一次登录验证,就可以访问多个应用程序。CAS系统将所有的登录信息存储在一个中心化的认证中心中,使得其他应用程序可以通过该中心获取用户的身份验证信息,从而实现单点登录的功能。


http://chatgpt.dhexx.cn/article/8ZNgHOAO.shtml

相关文章

CAS单点登录原理解析及相关配置

1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用…

CAS 单点登录的实现原理(一)

一,会话和Cookie HTTP是无状态协议,客户端与服务端之间的每次通信都是独立的,而会话机制可以让服务端鉴别每次通讯过程中的客户端是否是同一个,从而保证业务的关联性。 Session是服务器使用一种类似于散列表的结构,用…

CAS单点登录原理及实现

CAS单点登录原理及实现 标签(空格分隔): 单点登录 CAS SSO ###目录 概念介绍搭建流程原理分析 ###概念介绍 CAS介绍 Central Authentication Service(缩写CAS)是一种针对万维网的单点登录协议。它的目的是允许一个用…

单点登录CAS实现

单点登录(Single Sign-On,简称SSO)是一种身份验证技术,它允许用户使用一组凭据(如用户名和密码)登录到多个应用程序或系统中,而无需在每个应用程序或系统中单独登录。这种技术可以提高用户体验&…

CAS单点登录原理及改造

CAS是由耶鲁大学开发的单点登录系统,其核心的知识点包括以下几个概念: 1) TGT: 票据,或称大令牌,在登录成功之后生成,其中包含了用户信息 2) TGC: TGT的key,TGT存储在session中,TGC以cookie形式保存在浏览器…

SSO单点登录原理详解(从入门到精通)

本文主要对SSO单点登录与CAS、OAuth2.0两种授权协议的关系和原理进行详细说明。 1. 基础概念 SSO单点登录(Single sign-on) 所谓单点登录就是在多个应用系统中,用户只需登录一次就可以访问所有相互信任的系统。 CAS 中央认证服务&#xf…

CAS单点登录的实现

这篇文章对CAS单点登录具体实现的一些步骤就行讲述,至于CAS单点登录的实现原理分析,请参看下面这篇文章:CAS单点登录原理分析(一) https://blog.csdn.net/qq_41258204/article/details/84036875 CAS 包含两个部分: CAS Server 和…

CAS单点登录原理解析

推荐阅读 1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF-8 4. Springboot启动原理解析 1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访…

CAS单点登录的实现(二)

这篇文章对CAS单点登录具体实现的一些步骤就行讲述,至于CAS单点登录的实现原理分析,请参看下面这篇文章: CAS单点登录原理分析(一) https://blog.csdn.net/qq_41258204/article/details/84036875 CAS 包含两个部分: CAS Server 和…

CAS单点登录系列之原理简单介绍

文章目录 一、 SSO简介1.1 单点登录定义1.2 单点登录角色1.3 单点登录分类 二、 CAS简介2.1 CAS简单定义2.2 CAS体系结构2.3 CAS原理 三、CAS服务端部署附录 一、 SSO简介 1.1 单点登录定义 单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在…

CAS实现单点登录SSO执行原理探究(终于明白了)

一、不落俗套的开始 1、背景介绍 单点登录:Single Sign On,简称SSO,SSO使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 CAS框架:CAS(Central Authentication Service)是实现SSO单点登录的框架。 2、盗一张学习CAS绝大多都看过的图以及执…

CAS实现单点登录

1.简介 SSO单点登录 在多个相互信任的系统中,用户只需要登录一次就可以访问其他受信任的系统。 新浪微博与新浪博客是相互信任的应用系统。 *当用户首次访问新浪微博时,新浪微博识别到用户未登录,将请求重定向到认证中心,认证中心…

cas server + cas client 单点登录 原理介绍

CAS 介绍 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点: 开源的企业级单点登录解决方案。 CAS Server 为需要独立部署的 Web 应用…

CAS单点登录原理(包含详细流程,讲得很透彻,耐心看下去一定能看明白!)

转载地址 http://www.cnblogs.com/lihuidu/p/6495247.html 1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有…

CAS方式实现单点登录

单点登录,英文是 Single Sign On,缩写为 SSO。 多个站点(192.168.1.20X)共用一台认证授权服务器(192.168.1.110,用户数据库和认证授权模块共用)。用户经由其中任何一个站点(比如 192.168.1.201)登录后,可以免登录访问其他所有站点…

单点登录之CAS原理和实现

1.开源单点登录系统CAS入门 1.1 什么是单点登录 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用…

CAS单点登录原理分析(一)

一,业务分析 在分布式系统架构中,假设把上述的三个子系统部署在三个不同的服务器上。前提是用户登录之后才能访问这些子系统。那么使用传统方式,可能会存在这样的问题: 1.当访问用户中心,需要用户登录帐号 2.当访问购物…

cas单点登录原理与实现(整合springsecurity)

一、cas原理分析 SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。CAS是一种基于http协议的B/S应用系统单点登录实现方案,认识CAS之前首先要熟悉http协议、Session与Cookie…

CAS 实现单点登录(SSO)原理

原地址:https://blog.csdn.net/hejingyuan6/article/details/44277023 一、概念:     单点登录(Single Sign On):简称为SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中…

CAS单点登录原理

转载地址:转载博客 1、基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户…