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

article/2025/9/4 2:50:09

文章目录

    • 一、 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的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。也就是说只要登录一次单体系统就可以。

1.2 单点登录角色

单点登录一般包括下面三种角色:

①用户(多个);

②认证中心(一个);

③Web应用(多个)。

PS:这里所说的web应用可以理解为SSO Client,认证中心可以说是SSO Server。

1.3 单点登录分类

因为http协议是无状态的协议,所以要保持登录状态,必须要存储登录信息,按照存储方式,单点登录实现方式主要可以分为两种。

  • 一种是基于Cookie的,这种比较常见,比如下文介绍的CAS也是基于Cookie的;
  • 另外一种是基于Session的,其实理解起来就是会话共享,只有实现不同子系统之间的会话共享就能实现单点登录,详情可以参考我之前的博客,就是实现会话共享实现单点登录的,https://blog.csdn.net/u014427391/article/details/78653482

二、 CAS简介

2.1 CAS简单定义

CAS(Center Authentication Service)是耶鲁大学研究的一款开源的单点登录项目,主要为web项目提供单点登录实现,属于Web SSO

  • CAS Github链接
  • Apereo CAS官方网站

2.2 CAS体系结构

CAS体系结构分为CAS Server和CAS Client。

CAS Server就是Cas开源的,需要去github下载,然后进行修改;Cas Client
可以是App或者web端的或者PC端,CAS支持多种开发语言,java、php、C#等等

这里写图片描述
PS:图来自官网,这里简单介绍一下,从图可以看出,CAS支持多种方式的认证,一种是LDAP的、比较常见的数据库Database的JDBC,还有Active Directory等等;支持的协议有Custom Protocol 、 CAS 、 OAuth 、 OpenID 、 RESTful API 、 SAML1.1 、 SAML2.0 等

2.3 CAS原理

下面给出一张来自CAS官方的图片
这里写图片描述
CAS登录等系统分为CAS Server和CAS Client,下面,我根据我的理解稍微解释一下:

1、用户访问CAS Client请求资源

2、客户端程序做了重定向,重定向到CAS Server

3、CAS Server会对请求做认证,验证是否有TGC(Ticket Granted Cookie,有TGC说明已经登录过,不需要再登录,没有就返回登录页面

4、认证通过后会生成一个Service Ticket返回Cas Client,客户端进行Ticket缓存,一般放在Cookie里,我们称之为TGC(Ticket Granted Cookie)

5、然后Cas Client就带着Ticket再次访问Cas Server,CAS Server进行Ticket验证

6、CAS Server对Ticket进行验证,通过就返回用户信息,用户拿到信息后就可以登录

看到这个过程,我们大概就能理解CAS是怎么实现的,看起来过程挺多的,不过这些过程都是CAS在后台做的。CAS Service和CAS Client通讯基于HttpUrlConnection

注意要点:

  • TGT(Ticket Granded Ticket),就是存储认证凭据的Cookie,有TGT说明已经通过认证
  • ST(Service Ticket),是由CAS认证中心生成的一个唯一的不可伪装的票据,用于认证的
  • 没登录过的或者TGT失效的,访问时候也跳转到认证中心,发现没有TGT,说明没有通过认证,直接重定向登录页面,输入账号密码后,再次重定向到认证中心,验证通过后,生成ST,返回客户端保存到TGC
  • 登录过的而且TGT没有失效的,直接带着去认证中心认证,认证中心发现有TGT,重定向到客户端,并且带上ST,客户端再带ST去认证中心验证

三、CAS服务端部署

现在博客简单介绍一下,CAS Server简单部署实现,CAS是一款开源框架,目前应用比较广泛。下面简单介绍一下:
cas开源到github上,不过只有几个版本有cas release服务端,其它大部分版本都只有source源码而已,所以其它版本都需要自己编译,不想自己编译的可以下载V4.0.0版本的。
https://github.com/apereo/cas/releases/tag/v4.0.0

下载cas server之后,我们就可以简单部署一下,中间件可以用Tomcat
cas的安全机制是依靠SSL实现的,所以一般的http非安全链接不支持的,虽然是这么说,不过学习练习的话,也可以去掉https要求,下面介绍说一下:

可以先将cas-server-4.0.0-release.zip解压到Tomcat的webapp目录下面,然后需要修改一个配置文件
(1)、先修改一下cas-server-4.0.0-release的WEB-INF下面的deployerConfigContext.xml
修改前:

<!-- Required for proxy ticket mechanism. --><bean id="proxyAuthenticationHandler"class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"p:httpClient-ref="httpClient"  />

修改后,PS:加上p:requireSecure=“false”

<bean id="proxyAuthenticationHandler"  class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"  p:httpClient-ref="httpClient" p:requireSecure="false"/></code>  

(2)、修改WEB-INF下面的spring-configuration文件夹下面的ticketGrantingTicketCookieGenerator.xml
修改前:

<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"p:cookieSecure="true"p:cookieMaxAge="-1"p:cookieName="CASTGC"p:cookiePath="/cas" />

修改后,PS:改为p:cookieSecure=“false”

<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"p:cookieSecure="false"p:cookieMaxAge="-1"p:cookieName="CASTGC"p:cookiePath="/cas" />

(3)、修改WEB-INF下面的spring-configuration文件夹下面的warnCookieGenerator.xml
修改前:

<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"p:cookieSecure="true"p:cookieMaxAge="-1"p:cookieName="CASPRIVACY"p:cookiePath="/cas" />

修改后,PS:改为p:cookieSecure=“false”


<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"p:cookieSecure="false"p:cookieMaxAge="-1"p:cookieName="CASPRIVACY"p:cookiePath="/cas" />

(4)、修改CAS默认登录jsp页面
可以注释WEB-INF\view\jsp\default\ui\casLoginView.jsp页面如下代码

<c:if test="${not pageContext.request.secure}"><div id="msg" class="errors"><h2>Non-secure Connection</h2><p>You are currently accessing CAS over a non-secure connection.  Single Sign On WILL NOT WORK.  In order to have single sign on work, you MUST log in over HTTPS.</p></div>
</c:if>

去掉Https支持要求后,就可以通过http的链接登录cas server了,用户名是casuser,密码是Mellon
PS:可以在deployerConfigContext.xml里看到配置,正规项目是实现jdbc支持

<bean id="primaryAuthenticationHandler"class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"><property name="users"><map><entry key="casuser" value="Mellon"/></map></property></bean>

单点登录
这里写图片描述

单点登出
在这里插入图片描述

附录

参考教程:

Cas专题文章列表

springboot + shiro + cas4.2.7 实战


http://chatgpt.dhexx.cn/article/xt0LPd5N.shtml

相关文章

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

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

CAS实现单点登录

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

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

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

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

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

CAS方式实现单点登录

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

单点登录之CAS原理和实现

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

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

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

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

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

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

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

CAS单点登录原理

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

python iloc函数_如何使用python语言中pandas模块中的iloc方法

在python语言中,pandas模块中的iloc方法,可以截取矩阵,获取部分矩阵元素、行和列。下面利用实例说明iloc方法的用法,操作如下: 工具/原料 python pycharm 截图工具 方法/步骤 1 打开pycharm工具,新建python文件,导入numpy和pandas,调用DataFrame生成矩阵 2 保存…

python iloc和loc切片

文章目录 一、含正负号的下标二、loc和iloc1. 利用loc、iloc提取行数据2. 利用loc、iloc提取列数据3.利用loc、iloc提取指定行、指定列数据4.利用loc、iloc提取所有数据5.利用loc函数&#xff0c;根据某个数据来提取数据所在的行 一、含正负号的下标 正下标从0开始&#xff0c;…

Pandas之iloc、loc

除了最基本的筛选外&#xff0c;例&#xff1a;data[‘A’] 还有loc、iloc、ix&#xff08;已不推荐使用&#xff09; 我对它们的区分&#xff0c;说loc&#xff08;location&#xff09;&#xff0c;在教室里找不认识的同学的位置一样的&#xff0c;找人肯定要知道名字或者身…

iloc函数使用方法

iloc函数使用方法 iloc[ : , : ] 前面的冒号就是取行数&#xff0c;后面的冒号是取列数 左闭右开原则 举个例子来理解切片的概念。 animals[2&#xff1b;5] 其中2,5都是指的元素的索引&#xff0c;索引从0开始&#xff0c;表示从第3个元素到第四个元素&#xff08;前开后闭…

Pandas loc与iloc

先来看一下示例&#xff1a; #!/usr/bin/python import pandas as pd# 三个字段 name, site, age nme ["Google", "Runoob", "Taobao", "Wiki"] st ["www.google.com", "www.runoob.com", "www.taobao.co…

iloc函数

iloc函数 注意&#xff1a;以 **&#xff0c;**为分界 这样看更直观一点 原文链接&#xff1a;iloc

Python学习.iloc和.loc区别、联系与用法

最近接触到数据科学&#xff0c;需要对一些数据表进行分析&#xff0c;观察到代码中一会出现loc一会又出现iloc&#xff0c;下面对两者的用法给出我的一些理解。 1.联系 (1)操作对象相同&#xff1a;loc和iloc都是对DataFrame类型进行操作&#xff1b; (2)完成目的相同&…

Pandas中的loc与iloc用法详解

1.基本简介 1.1 loc与iloc基本含义 loc函数&#xff1a;通过行索引 “Index” 中的具体值来取行数据&#xff08;如取"Index"为"A"的行&#xff09; iloc函数&#xff1a;通过行号来取行数据&#xff08;如取第二行的数据&#xff09; 注&#xff1a;loc是…

JavaScript鼠标移动事件

下面我们来看一个JavaScript鼠标移动选择器时发生改变的列子&#xff0c;图1是它的一个简单的布局&#xff0c; 接下来是它的css部分和js部分&#xff0c;js部分很简单 最后的效果图就出来了