CAS登录认证

news2024/12/23 8:15:24

CAS最基本的协议过程:

名词解释

  • Ticket Grangting Ticket(TGT) :
    TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后,CAS生成cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值。当HTTP再次请求到来时,如果传过来的有CAS生成的cookie,则CAS以此cookie值为key查询缓存中有无TGT,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。

  • Ticket-granting cookie(TGC)
    存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CASServer用来明确用户身份的凭证。

  • Service ticket(ST) :服务票据,服务的惟一标识码 , 由 CASServer 发出( Http 传送),用户访问Service时,service发现用户没有ST,则要求用户去CAS获取ST.用户向CAS发出获取ST的请求,CAS发现用户有TGT,则签发一个ST,返回给用户。用户拿着ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源

组成

  • CAS 服务端
    CASServer 负责完成对用户的认证工作 , 需要独立部署 , CAS Server 会处理用户名 /密码等凭证 (Credentials) 。

  • CAS 客户端
    负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证。(原则上,客户端应用不再接受任何的用户名密码等 Credentials )。
    CASClient 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。

CAS Web工作流程

CAS登录流程

步骤 1:浏览器向CAS客户端发起登陆请求,CAS客户端生成“登陆URL”,并把浏览器重定向到该URL 登陆URL:https://${cas-server-host}:${cas-server-port}/cas-server/login?service=${client-service-url}

  • 其中
    • cas-server-host: cas认证服务器的域名
    • cas-server-port: cas认证服务器的IP
    • client-service-url: 用于登陆成功后,浏览器重定向的URL

java举例:
https://cas-server.domain.com/cas/login?service=http%3A%2F%2Fcas.domain.com%3A8080

步骤 2: 浏览器向“登陆URL”发起重定向请求,CAS服务端创建会话,把TGT(Ticket Granting Ticket)放入cookie,并返回登陆页面

步骤 3:用户输入用户名和密码,然后提交登陆表单. CAS服务端通过登陆验证后,会生成一个ST(service ticket,简称ticket), 然后把浏览器重定向到${client-service-url}?ticket=${service-ticket}

步骤 4:浏览器重定向到${client-service-url}?ticket=${service-ticket}发起重定向请求

java举例:
http://cas.domain.com/8080?ticket=${service-ticket}

步骤 5: CAS客户端取出ticket,生成“ticket验证URL”,然后向"ticket验证URL"发起http GET请求 "ticket验证URL": http://${cas-server-host}:${cas-server-port}/cas-server/serviceValidate?ticket=${service-ticket}&service=${client-service-url}

java举例:
https://cas-server.domain.com/cas/serviceValidate?ticket=${service-ticket}&service=http://cas.domain.com/8080

步骤 6: 如果CAS服务器通过ticket的有效性检查,那么会返回类似如下格式的XML片段

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
    <cas:authenticationSuccess> 
        <cas:user>AAAA</cas:user>
    </cas:authenticationSuccess> 
</cas:serviceResponse>
  • 其中AAAA是登陆的用户名

否则返回:

<cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> 
    <cas:authenticationFailure code='XXX'> YYY </cas:authenticationFailure> 
</cas:serviceResponse>
  • 其中:
    • XXX的可能取值是INVALID_REQUEST, INVALID_TICKET, INVALID_SERVICE, INTERNAL_ERROR
    • YYY是错误描述信息

至此CAS的登陆流程结束

登陆成功后,CAS客户端应该在会话中保存登陆状态信息。CAS服务器通常在步骤 6会建立ticket和${client-service-url}的映射关系,以便在登出时通知其业务系统清除缓存中的状态信息

CAS登出流程

浏览器或CAS客户端向“登出URL”发起GET请求: "登出URL": https://${cas-server-host}:${cas-server-port}/cas-server/logout CAS服务器销毁TGT和ST,并向所有已登陆的业务系统发出登出通知请求

java举例:
https://cas-server.domain.com/cas/logout?service=http://cas.domain.com:8080

<end>


<strike>
请求方法:POST
请求URL: ${client-service-url} ( http://cas.domain.com/8080)
请求头: Content-Type:application/x-www-form-urlencoded
请求正文:

<!-- lang: xml --> 
logoutRequest=
<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="#LR_TICKET_ID#" Version="2.0" IssueInstant="#CURRENT_DATETIME#"> 
    <saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">@NOT_USED@</saml:NameID> 
    <samlp:SessionIndex>#ST#</samlp:SessionIndex> 
</samlp:LogoutRequest>
  • 其中
    • LR_TICKET_ID:   CAS服务器为每个登出通知请求所生成的一个值
    • ST         之前登陆成功后CAS服务端传回来的Service Ticket
    • CURRENT_DATETIME 发出该请求时,CAS服务器的日期/时间
      </strike>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/67184.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

应用于供暖、供水管道等场景的一种智能控制阀

智能控制阀&#xff0c;顾名思义就是能够实现智能化控制功能的一种控制阀。它有什么用处呢&#xff1f; TSM-04V无线智能控制阀由锂亚电池供电、超长续航&#xff0c;具有无线远程配置功能&#xff0c;是一种高可靠性阀控设备。自带断码显示屏&#xff0c;可以查看设备的电量、…

在VScode中使用Jupyter Notebook的一些技巧

目录 一、VScode中Jupyter Notebook的优点 二、Cell命令模式目前支持的Jupyter Notebook快捷 三、Cell编辑模式下支持的Vscode快捷键&#xff08;只描述与编辑相关的那些快捷键&#xff09;​​​​​​​ 一、VScode中Jupyter Notebook的优点 1.写py代码和使用Notebook经常…

DBCO-SS-Mal,DBCO-SS-Maleimide,马来酰亚胺衍生物试剂特点分析

一、基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a; CAS号&#xff1a;N/A 中文名&#xff1a;二苯并环辛炔-二硫键-马来酰亚胺 英文名&#xff1a;DBCO-SS-Maleimide&#xff0c;DBCO-SS-Mal二、详细产品数据&#xff08;Detailed Product Data&#xf…

aws 整理和理解aws的虚拟化技术

资料 Introduce_to_virtualizationKVM I/O虚拟化AWS EC2 Virtualization 2017: Introducing Nitro从AWS转向KVM&#xff0c;再看KVM与XEN的技术路线之争 简单整理并了解下和aws相关的虚拟化技术 虚拟化技术 相关概念 Hypervisor Hypervisor是一种运行在物理服务器和操作系…

一文彻底搞懂什么是SSH中间人攻击(Man-in-the-middle attack)

文章目录【1】背景【2】中间人攻击原理登录报错信息提示从首次登录服务器说起中间人攻击原理重装服务器导致ssh无法登录的解决方案【3】如何避免中间人攻击&#xff1f;【4】什么是Known_hosts &#xff1f;known_hosts中的文件来自哪里&#xff1f;这个/etc/ssh/ssh_host_ecds…

gcc内联汇编

1. 介绍 用汇编编写的程序虽然运行速度快&#xff0c;但开发速度非常慢&#xff0c;效率也很低。如果只是想对关键代码段进行优化&#xff0c;或许更好的办法是将汇编指令嵌入到 C 语言程序中&#xff0c;从而充分利用高级语言和汇编语言各自的特点。但一般来讲&#xff0c;在…

华为机试_HJ81 字符串字符匹配【简单】【收藏!】

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 解题过程 提交代码 学习代码 收藏点 一、strstr函数 二、stdlib.h 描述 判断短字符串S中的所有字符是否在长字符串T中全部出现。 请注意本题有多组样例输入。 数据范围:1≤len(S),len(T)≤200 进阶&#xf…

如何解决“德语/文”等外文字符显示乱码问题

目录 1“德文/语字符”等外文显示乱码原因 2 如何解决“德文/语字符”等外文显示乱码 2.1 使用支持多个“编码”切换的工具打开该文本 2.2 使用变音字符的标准ASCII字符 2.3 将计算机系统切换至西欧编码 3 结尾 1“德文/语字符”等外文显示乱码原因 以德文/语为例&#…

vue3(二)

前一篇讲了 vue3的生命周期钩子的使用。 本节接着讲 vue3的数据通信。 provide/inject 依赖注入 App.vue <script setup lang"ts"> import { ref, provide } from vue import List from ./components/List.vue import User from ./components/User.vue impo…

知识点8--Docker镜像的秘密

前面的知识点我们介绍了docker的日常使用&#xff0c;但其实docker存在的核心意义是交付环境&#xff0c;也就是镜像&#xff0c;本片知识点带大家了解一下镜像的秘密。 镜像本身是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;包…

【Tensorflow学习二】神经网络优化方法学习率、激活函数、损失函数、正则化

文章目录预备知识tf.wheretf.random.RandomState.rand() 返回一个[0,1)之间的随机数np.vstack() 将数组按照垂直方向叠加np.mgrid[ ] np.ravel( ) np.c_[ ] 一起使用可以生成网格坐标点复杂度、学习率复杂度指数衰减学习率激活函数Sigmoid激活函数Tanh激活函数ReLu激活函数Leak…

今天面了个00后测试员,让我见识到了内卷届的天花板

深耕IT行业多年&#xff0c;我们发现&#xff0c;对于一个程序员而言&#xff0c;能去到一线互联网公司&#xff0c;会给我们以后的发展带来多大的影响。 很多人想说&#xff0c;这个我也知道&#xff0c;但是进大厂实在是太难了&#xff0c;简历投出去基本石沉大海&#xff0…

Linux安装KVM

一、虚拟化技术 1、全虚拟化和半虚拟化技术 如果给KVM、XEN简单归类的话&#xff0c;KVM是完全虚拟化技术又叫硬件辅助虚拟化技术&#xff08;Full Virtualization)。相反&#xff0c;XEN是半虚拟化技术&#xff08;paravirtualization&#xff09;&#xff0c;也叫做准虚拟化…

线上环境内存溢出-OutOfMemoryError

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 线上环境内存溢出-OutofMemoryError前言一、OutOfMemoryError是什么&#xff1f;二、实际情况&#xff08;参考&#xff09;解决方案1.实战总结前言 公司线上环境&#xff0…

getBoundingClientRect属性研究

getBoundingClientRect属性研究 概念 getBoundingClientRect 返回 width、height和下图中的6个属性 实测总结&#xff1a; 抓住一个核心点&#xff0c;就是height、width的值&#xff1a; box-sizing 是 content-box时&#xff0c;width和height 内容borderpaddingbox-siz…

国家级专新特精“小巨人”「皖仪科技」携手企企通,打造采购数字化平台成功上线

近日&#xff0c;安徽皖仪科技股份有限公司&#xff08;以下简称“皖仪科技”&#xff09;携手企企通共同打造的数字化采购管理系统成功上线。基于皖仪科技的采购业务流程和规则&#xff0c;形成全新的数字化采购体系&#xff0c;在推动企业降本增效的同时&#xff0c;实现企业…

单商户商城系统功能拆解42—应用中心—商城公告

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

冠状病毒疾病优化算法 (COVIDOA)附matlab代码

​✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法…

npp各个平台npp数据比较

文章目录1GEE中的npp数据2 与其他数据的比较1GEE中的npp数据 在GEE上查阅npp&#xff0c;可以看到有连个数据集&#xff0c;一个是Terra的&#xff0c;另一个是Aqua的。 我比较了两个的不同&#xff0c;发现Terra是2000-目前的&#xff0c;而Aqua是2002-目前的&#xff0c;都是…

2022吴恩达机器学习课程——第一课

注&#xff1a;参考B站视频教程 视频链接&#xff1a;【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】 文章目录第一周一、监督学习与无监督学习二、线性回归三、梯度下降第二周一、向量化二、特征缩放第三周一、逻辑回归二、训练逻辑回归模型三、逻辑回归中的梯度下降四…