Cas的全称是Centeral Authentication Service,是对单点登录SSO(Single Sign On)的一种实现。其由Cas Server和Cas Client两部分组成,Cas Server是核心,而Cas Client通常就对应于我们的应用。一个Cas Server可以对应于多个Cas Client。它允许我们在一个Client进行登录以后无需再让用户输入用户名和密码进行认证即可访问其它Client应用。
Cas Server的主要作用是通过发行和验证Ticket(票)来对用户进行认证和授权访问Client应用,用于认证的凭证信息都是由Cas Server管理的。而Cas Client就对应于我们真正的应用,当然其中会使用到Cas相关的类,用于与Cas Server进行交互。官网有两张图最能体现Cas的架构和原理。
如你所见,在第一次访问应用app1时,由于没有登录会直接跳转到Cas Server去进行登录认证,此时将附带查询参数service在Cas Server的登录地址上,表示登录成功后将要跳转的地址。此时Cas Server检查到没有之前成功登录后生成的SSO Session信息,那么就会引导用户到登录页面进行登录。用户输入信息提交登录请求,Cas Server认证成功后将生成对应的SSO Session,以及名为CASTGC的cookie,该cookie包含用来确定用户SSO Session的Ticket Granting Ticket(TGT)。之后会生成一个Service Ticket(ST),并将以ticket作为查询参数名,以该ST作为查询参数值跳转到登录时service对应的URL。如:
http(s)://domain/app1?ticket=ST-2-59fS6KxvmykibRXyoPJE
之后的操作对用户来说都是透明的,即不可见的。app1之后将以service和ticket作为查询参数请求Cas Server对service进行验证,验证通过后Cas Server将返回当前用户的用户名等信息。app1就会给当前用户生成其自身的Session,以后该用户以该Session都可以成功的访问app1,而不需要再去请求Cas Server进行认证。当该用户再去访问app2的时候,由于其在app2上没有对应的Session信息,将会跳转到Cas Server的登录地址,Cas Server此时发现其包含名为CASTGC的cookie,将获取其中包含的TGT来获取对应的SSO Session,然后会将用户重定向到app2对应的地址,以Service Ticket作为查询参数。之后app2会向Cas Server发送请求校验该Service Ticket,校验成功后app2将建立该用户对应的Session信息,以后该用户以该Session就可以自由的访问app2了。
综上所述,我们知道,各系统之间的单点登录是通过Cas Server生成的SSO Session来交流的,而用户与实际的应用系统进行交互的时候,各应用系统将建立单独的Session,以满足用户与该系统的交互需求。
(注:本文是基于cas 3.5.2所写)
(注:原创文章,转载请注明出处。原文地址:http://elim.iteye.com/blog/2128728)
相关推荐
### 让CAS支持客户端自定义登录页面——服务器篇 #### 概述 本文档主要介绍如何在CAS(Central Authentication Service)系统中实现客户端自定义登录页面的功能,并且着重讲解服务器端的修改步骤与注意事项。CAS...
标题中的“让CAS支持客户端自定义登陆页面——客户端篇”表明了本文主要探讨的是如何在中央认证服务(Central Authentication Service, CAS)系统中,允许客户端应用程序实现自定义登录页面的配置与实现。CAS是一个...
在IT行业中,集成Spring、Spring Web MVC和CAS客户端是一项常见的任务,主要用于构建安全的Web应用程序。下面将详细解释这些技术及其整合过程。 首先,Spring是一个开源的Java框架,它简化了开发过程,提供了依赖...
敏捷Acegi、CAS++构建安全的Java系统pdf——part5
CAS单点登录,退出后ticket失效报出异常解决办法——换jar包 把客户端的 casclient.jar 包换成我的这个。
敏捷Acegi、CAS++构建安全的Java系统pdf——part4
本文将详细介绍如何通过服务器端的配置,实现让CAS(Central Authentication Service,中央认证服务)支持客户端自定义登录页面的过程。这一过程不仅可以提升用户体验,还能够满足特定场景下的定制化需求。 ### ...
这将生成一对密钥——一个私钥(key.pem)和一个公钥证书(cert.pem),有效期为365天,且不设置密码保护。 接下来,`sacclient2`和`sacclient`可能是CAS客户端的实现,用于与CAS服务器进行交互。它们可能提供了API...
《H3C CAS七日通》是一份针对H3C云计算软件套件——H3C Cloud Automation System (简称H3C CAS) 的详尽学习资料,旨在帮助用户在一周内快速掌握该系统的使用和管理。这份资料包含了有声讲解版,以音频形式辅助理解,...
资源名称:敏捷Acegi、CAS.构建安全的Java系统资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
假设我们有两个Web应用程序——`test1`和`test2`,这两个应用均集成了CAS客户端。其中,`test1`运行在`http://www.zhuowei.com:8081/`上,而`test2`则运行在`http://www.zhuowei.com:8082/`。同时,CAS服务器运行在`...
#### 一、CAS简介 CAS(Central Authentication Service)是由耶鲁大学发起的一项开源项目,其目标在于为Web应用提供可靠且统一的单点登录解决方案。自2004年12月起,CAS成为了JA-SIG(Joint Authorization and ...
【描述】:“casCASCASCASCASCASCASCASCASCASCASCASCASCASCASCASCASCAS”描述中的连续字母“C”可能在强调CAS的核心功能——连接和认证。CAS的主要工作原理是,当用户尝试访问受保护的应用时,会被重定向到CAS服务器...
敏捷Acegi、CAS++构建安全的Java系统pdf——part3
敏捷Acegi、CAS++构建安全的Java系统pdf资源
3. **票证验证协议**:CAS使用两种主要类型的票证——**服务票证(Service Ticket)** 和 **代理票证(Proxy Ticket)**。当用户尝试访问一个受保护的服务时,会收到一个服务票证,然后将这个票证发送到CAS服务器...
在这个压缩包中包含的三个关键jar文件——cas-client-core-3.1.3.jar、opensaml-1.1b.jar和xmlsec-1.3.0.jar,是CAS客户端的核心依赖库,它们各自承担着不同的功能: 1. **cas-client-core**: cas-client-core-...
本文档详细介绍了并发编程中的原子操作,特别是Java语言中通过CAS(Compare-And-Swap)实现的原子操作,并指出了在实际编程中如何使用和实现原子操作。 首先,文档开篇就介绍了原子操作的定义。所谓原子操作,指的...
目录: 第2016期:云计算软件维护经验分享 ...第2025期:CAS存储模块详解(上)——OCFS2文件系统分布式锁介绍 第2026期:CAS存储模块详解(下)——磁盘锁与RBD介绍 第2027期:CAS CVM管理平台详解