CAS客户端认证流程
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片段
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是登陆的用户名 
否则返回:
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
请求正文:
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服务器的日期/时间
 
CAS客户端认证流程的更多相关文章
- 自定义cas客户端核心过滤器AuthenticationFilter
		
关于cas客户端的基本配置这里就不多说了,不清楚的可以参考上一篇博文:配置简单cas客户端.这里是关于cas客户端实现动态配置认证需要开发说明. 往往业务系统中有些模块或功能是可以不需要登录就可以访问 ...
 - CAS客户端整合(四)-- Cacti
		
Cacti 是一套纯 lnmp 搭建的服务器监控系统,用 SNMP 抓取数据,RRDTool 绘制表格 登录流程 Cacti 的登录同样是先判断session,再尝试从 cookie 读取 sessi ...
 - cas 服务端认证流程
		
CAS服务端流程分析 'CAS单点登录服务器端的登录流程' -----流程的配置在/WEB-INF/login-webflow.xml文件中 <var name="credential ...
 - cas客户端流程详解(源码解析)--单点登录
		
博主之前一直使用了cas客户端进行用户的单点登录操作,决定进行源码分析来看cas的整个流程,以便以后出现了问题还不知道是什么原因导致的 cas主要的形式就是通过过滤器的形式来实现的,来,贴上示例配置: ...
 - cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
		
转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom ...
 - CAS客户端整合(二) Zabbix
		
Zabbix是一个强大的服务器/交换机监控应用,有zabbix-server, zabbix-client, zabbix-web 三部分.zabbix-web管理端是用php写的. 前文参考:CAS ...
 - CAS客户端整合(三) Otrs
		
OTRS 是用Perl写的一个工单邮件系统,非常强大. 登录流程 流程图略过 otrs没有像 discuz 和 zabbix 类似的游客登录状态,这样处理起来逻辑分支少一些. 不过还是考虑用 otrs ...
 - CAS登录认证的简单介绍
		
参考博客: https://www.jianshu.com/p/8daeb20abb84 下面是CAS最基本的协议过程: 下面是CAS Web工作流程图: 名词解释 Ticket Grangting ...
 - SSO单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析
		
落雨 cas 单点登录 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的 ...
 
随机推荐
- c# 遍历局域网计算机(电脑)获取IP和计算机名称
			
c#可以遍历局域网计算机,获取全部计算机的名称和IP地址,网上提供了相关的几种方法,并对效率进行了比较,但是没有对各种方法进行比较,以确定可以使用的情况.这篇文章将对这几种方法进行分析,以帮助了解各种 ...
 - Arduino---HC-05 蓝牙模块
			
蓝牙基础知识回顾: (一)Arduino和HC-05连接 注意:Arduino通过TX与HC-05进行通信,而Arduino的电压为5V,HC-05的允许电压为3.3V.短时间通信无妨(长时间可能烧毁 ...
 - 一百四十七:CMS系统之celery实现邮件和短信异步发送
			
celery工作原理 celery官方文档:https://docs.celeryproject.org/en/latest/ 安装:pip install celery windows下还需安装ev ...
 - PAT 甲级 1051 Pop Sequence (25 分)(模拟栈,较简单)
			
1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the ord ...
 - DN创建
			
1. 参考采购订单创建DN : BAPI_OUTB_DELIVERY_CREATE_STO FUNCTION zmmfm0202. *"--------------------------- ...
 - FCKEDITOR在.NET中的使用
			
FCKEDITOR在.NET中的使用 FCKeditor介绍 FCKeditor是一个功能强大支持所见即所得功能的文本编辑器,可以为用户提供微软office软件一样的在线文档编辑服务.它不需要安装任何 ...
 - jsPlumb 基本概念
			
jsPlumb 基本概念 一.默认属性 Anchor:锚点(连接点位置),可以设置在任何没有锚点的目标上(endPoint) Anchors:设置在connect的源和目标点的连接点位置,默认是 Bo ...
 - Jrebel激活方法
			
参考 https://www.yanjiayu.cn/posts/3eecb801.html https://gitee.com/gsls200808/JrebelLicenseServerforJa ...
 - django:bootstrap table加载django返回的数据
			
bootstrap table加载表格数据有两类方式: 一种通过data属性的方式配置,一种是javascipt方式配置 这里看js配置方式: 1.当数据源为.json文件时 url参数写上json文 ...
 - Vue Router的导航解析过程
			
在我没读官方的vue router文档之前,我怎么也没想到路由的解析过程竟然有12步. 12步如下: 导航被触发. 在失活的组件里调用离开守卫beforeRouteLeave . 调用全局的 befo ...