CAS登陆流程

Step 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

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

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

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

Step 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}

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

view source print?
1 <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
2     <cas:authenticationSuccess>
3         <cas:user>AAAA</cas:user>
4     </cas:authenticationSuccess>
5 </cas:serviceResponse>

其中AAAA是登陆的用户名 
否则返回:

view source print?
1 <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'>
2     <cas:authenticationFailure code='XXX'>
3          YYY
4     </cas:authenticationFailure>
5 </cas:serviceResponse>

其中:

  • XXX的可能取值是INVALID_TICKET, CREATION_ERROR, INVALID_SERVICE
  • YYY是错误描述信息

至此CAS的登陆流程结束

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

CAS登出流程

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

请求方法:POST

请求URL: ${client-service-url}

请求头: Content-Type:application/x-www-form-urlencoded

请求正文:

view source print?
1 logoutRequest=<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="#LR_TICKET_ID#"
2 Version="2.0" IssueInstant="#CURRENT_DATETIME#">
3     <saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">@NOT_USED@</saml:NameID>
4     <samlp:SessionIndex>#ST#</samlp:SessionIndex>
5 </samlp:LogoutRequest>

*其中

  • LR_TICKET_ID:  CAS服务器为每个登出通知请求所生成的一个值
  • ST        之前登陆成功后CAS服务端传回来的Service Ticket
  • CURRENT_DATETIME 发出该请求时,CAS服务器的日期/时间

转载于:https://www.cnblogs.com/fuyaozhishang/p/10965728.html

CAS客户端认证流程相关推荐

  1. 【实战】从零搭建SSO单点登录服务器 - CAS认证流程

    前言 因系统逐渐增多,各个业务系统间无法共享用户状态,每个系统都需要用户登录.这对于用户来说很不友好,于是需要搭建一个SSO单点登录服务器,来做统一的登录.注销. 写这个系列的文章有两个目的: 记录自 ...

  2. cas 认证流程以及原理

    单点登录原理: 第一次登录 某用户访问a系统的资源,会被cas客户端拦截,cas检测到没有JSESSIONID,于是转发到cas服务器,cas服务器检测到请求中没有携带TGT信息,于是返回登录页面(并 ...

  3. CAS认证登录,CAS客户端配置并对接多个不同服务端(spring boot)

    Spring Boot集成CAS客户端 本教程是通过访问url来进入登录界面. 需求: 我们开发平台有很多学校在使用,需要接入每个学校的统一认证CAS系统. 1.服务端设置授权域名或者IP 2.访问地 ...

  4. SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

    落雨 cas 单点登录 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的 ...

  5. 从cas-overlay-template安装apereo cas 6.1.x并连接CAS客户端

    一 什么是单点登录 简单点说 单点登录的英文名称为Single Sign-On,简写为SSO,它是一个用户认证的过程,允许用户一次性进行认证之后,就访问系统中不同的应用:而不需要访问每个应用时,都重新 ...

  6. CAS客户端整合(三) Otrs

    OTRS 是用Perl写的一个工单邮件系统,非常强大. 登录流程 流程图略过 otrs没有像 discuz 和 zabbix 类似的游客登录状态,这样处理起来逻辑分支少一些. 不过还是考虑用 otrs ...

  7. python学习04--django集成CAS客户端

    python学习04--django集成CAS客户端 前言 一.CAS客户端 1.新建一个Django项目,前面已讲, 2.安装依赖 3.配置Django_cas_ng,在settings文件中 4. ...

  8. 大白话详解Spring Security认证流程

    前言 Spring Seuciry相关的内容看了实在是太多了,但总觉得还是理解地不够巩固,还是需要靠知识输出做巩固. 相关版本: java: jdk 8 spring-boot: 2.1.6.RELE ...

  9. 密钥生成并配置_基于密钥的SSH认证流程

    " 基于密钥的SSH认证流程." 01 - 基于密钥的SSH认证流程 Client生成一对密钥,将公钥存放于Server上,私钥自己留着. Server收到Client的登录请求, ...

最新文章

  1. OpenShift 4 - 在集群节点用crictl对Pod/Image/Container进行操作
  2. 213. 打家劫舍 II(JavaScript)
  3. 开源 java CMS - FreeCMS2.8 数据对象 site
  4. 大数据学习笔记02-HDFS-常用命令
  5. java socket编程 聊天_基于java的socket简单聊天编程
  6. 我安装java了_我安装了JAVA为什么.......
  7. Windows 下 tail 查看日志命令工具
  8. VMware12序列号
  9. java基础编程题库_JAVA基础编程练习题
  10. idea设置字体不生效的问题
  11. 2020湖南省技能竞赛获奖名单_2020年全国职业院校技能大赛教学能力比赛落幕 湖南获一等奖数量排全国第一...
  12. 深度学习AI美颜系列---人像审美
  13. jQuery购物车 商品数量加减和小计
  14. JMS createSession(false, Session.AUTO_ACKNOWLEDGE); 两个参数不同组合下的区别
  15. 你没看错!TCL品牌日10万台洗衣机免费送
  16. 鲍尔默密会快船老板娘,微软前CEO要玩球
  17. 一、Conflux 网页钱包创建
  18. cisco命令防ping_Cisco基本命令配置
  19. 通过编程模拟一个简单的饮料自动贩卖机_你喝过自动贩卖的现榨橙汁吗?
  20. f=fit matlab,Matlab免疫算法多目标,卡在第三个‘fit = eval(f)’

热门文章

  1. Hadoop_10_HDFS 的 DataNode工作机制
  2. keystore是个嘛东西
  3. iOS开发 - iOS10隐私数据访问问题
  4. 阮一峰:炫耀从来不是我的动机,好奇才是
  5. ASP.NET知识点
  6. ENtEntityFranework 的简单应用(一)
  7. python分析彩票_[博乐彩票网]福彩3D第2008277期和值和尾分析
  8. 网页设计工资一般多少_初级会计师就业前景怎么样?工资一般多少?
  9. elasticsearch新增_SpringBoot 使用JestClient操作Elasticsearch
  10. Python机器学习:PCA与梯度上升:05高维数据映射成低维数据(封装一个PCA)