`

CAS—认证原理

    博客分类:
  • CAS
 
阅读更多

CAS,Central Authentication Service—中央认证服务,是Yale 大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的SSO解决方案。下面简单介绍SSO,重点介绍CAS认证过程。

一、    SSO简介

  1.1   概念

  SSO英文全称Single Sign On,是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次 就可以访问所有相互信任的应用系统。

  1.2  角色

  一般 SSO 体系主要角色有三种:

  *  User (多个)

  * Web 应用(多个)

  * SSO 认证中心( 一个 )

  1.3  原则

  SSO 实现模式一般包括以下三个原则:

  *  所有的认证登录都在 SSO 认证中心进行;

  *  SSO 认证中心通过一些方法来告诉 Web 应用当前访问用户究竟是不是已通过认证的用户;

  *  SSO 认证中心和所有的 Web 应用建立一种信任关系,也就是说 web 应用必须信任认证中心。(单点信任)

二、    CAS原理介绍

 

  2.1  体系结构

    从结构体系看,CAS 包括两部分: CAS Server 和 CAS Client 。

    CAS Server负责完成对用户的认证工作 ,会为用户签发两个重要的票据:登录票据(TGT)和服务票据(ST)来实现认证过程, CAS Server需要独立部署 。

    CAS Client负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到 CAS Server 进行认证。准确地来说,它以Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求的 Http 请求中是否包含 ServiceTicket(服务票据,由 CAS Server发出用于标识目标服务)。CAS Client 与受保护的客户端应用部署在一起

  由上可知,它符合SSO中的角色架构,如下:

  *  User (多个)

  *  Web 应用(多个CAS Client—与Web应用部署在一起

  *  SSO 认证中心( 一个CAS Server—独立部署

  2.2  核心票据

    CAS的核心就是其Ticket,及其在Ticket之上的一系列处理操作。CAS的主要票据有TGT、ST、PGT、PGTIOU、PT,其中TGT、ST是CAS1.0(基础模式)协议中就有的票据,PGT、PGTIOU、PT是CAS2.0(代理模式)协议中有的票据。这里主要介绍CAS1.0—基础模式中的几种票据。

  TGT(Ticket Grangting Ticket)

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

   TGC (Ticket-granting cookie)

    上面提到,CAS-Server生成TGT放入自己的Session中,而TGC就是这个Session的唯一标识(SessionId),以Cookie形式放到浏览器端,是CAS Server用来明确用户身份的凭证。(如果你理解Session的存放原理的话就很好理解)

    ST(ServiceTicket)

    ST是CAS为用户签发的访问某一服务票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,如果用户的请求中包含cookie,则CAS会以此cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。

为了保证ST的安全性:ST 是基于随机生成的,没有规律性。而且,CAS规定 ST 只能存活一定的时间,然后 CAS Server 会让它失效。而且,CAS 协议规定ST只能使用一次,无论 Service Ticket 验证是否成功, CASServer 都会清除服务端缓存中的该 Ticket ,从而可以确保一个 Service Ticket 不被使用两次。

  2.3  认证过程

  这里用一个终端,对两个CAS—Client的三次请求来说明CAS的认证过程,主要是TGT、TGC、ST等票据的传递,以及如何实现的SSO。

  如下图,前两次请求都是访问的CAS—Client1,主要来说明TGT、TGC、ST等票据的作用;然后第三次请求访问的是CAS—Client2,主要来说明如何实现的SSO。

 

      

 

  Request1

    【第一步】终端第一次访问CAS—Client1,AuthenticationFilter会截获此请求:1首先,检测本地Session没有缓存有用户信息;2然后,检测到请求信息中没有ST;3所以,CAS—Client1将请求重定向到CAS—Server,并传递 Service (也就是要访问的目的资源地址,以便登录成功过后转回该地址),例:【https://cas:8443/cas/login?service=http0%3A8081%2F】

    【第二步】终端第一次访问CAS—Server:1CAS—Server检测到请求信息中没有TGC,所以跳转到自己的登录页;2终端输入用户名、密码登录CAS—Server,认证成功后,CAS—Server会生成登录票据—TGT(集成了用户信息与ST),并随机生成一个服务票据—ST与CAS会话标识—TGC。TGT实际上就是Session,而TGC就是这标识这个Session存到Cookie中的SessionID;ST即,根据Service生成Ticket。3然后,CAS—Server会将Ticket加在url 后面,然后将请求redirect 回客户web 应用,例如URL为【http://192.168.1.90:8081/web1/?ticket=ST-5-Sx6eyvj7cPPCfn0pMZ】

    【第三步】这时,终端携带ticket再次请求CAS—Client1:1、这时客户端的AuthenticationFilter看到ticket 参数后,会跳过,由其后面的TicketValidationFilter 处理;2、TicketValidationFilter 会利用httpclient工具访问cas 服务的/serviceValidate 接口, 将ticket 、service 都传到此接口,由此接口验证ticket 的有效性,即向CAS—Server验证ST的有效性。3、TicketValidationFilter如果得到验证成功的消息,就会把用户信息写入web 应用的session里。至此为止,SSO 会话就建立起来了。

  Request2

    上面说了SSO 会话已经建立起来了,这时用户在同一浏览器里第二次访问此web 应用(CAS—Client1)时,AuthenticationFilter会在session 里读取到用户信息,这就代表用户已成功登录,所以就不会去CAS 认证了。

  Request3

    【第一步】与Request1是完全一样的,如下:终端第一次访问CAS—Client2,AuthenticationFilter会截获此请求:1首先,检测本地Session没有缓存有用户信息;2然后,检测到请求信息中没有ST;3所以,CAS—Client1将请求重定向到CAS—Server,并传递 Service (也就是要访问的目的资源地址,以便登录成功过后转回该地址),例:【https://cas:8443/cas/login?service=http0%3A8081%2F】

    【第二步】然后,终端第次访问CAS—Server:此时,Request中会带有上次生成的TGC,然后根据TGC(SessionID)去查找是否有对应的TGT(Session),如果有,代表此用户已成功登录过,所以此时用户不必再去登录页登录(SSO的体现),而CAS—Server会直接用找到的TGT签发一个ST,然后重定向到CAS—Client2,剩下的如Request1中的【第三步】就完全一样了。

三、    总结

    CAS认证过程中的核心概念即是几个【票据】,实际上其实就是1个Cookie和N个Session。包括CAS1.0(基础模式)的TGT、ST、TGC;以及CAS2.0(代理模式)的PGT、PT、PGTIOU等。认证过程,即是这几个票据的传递与对比验证的过程。

 

本文转载于:http://blog.csdn.net/wang379275614/article/details/46337529 有任何问题请到原文提问

分享到:
评论

相关推荐

    cas认证原理[参考].pdf

    【CAS认证原理】 单点登录(SSO,Single Sign-On)是一种网络认证机制,它允许用户在访问多个相互关联的应用系统时,只需登录一次即可。SSO的主要目标是简化用户体验,减少用户记忆和输入多次凭证的繁琐过程。CAS...

    cas认证原理

    CAS认证原理 单点登录概述 单点登录(Single Sign-On,简称SSO)是指用户在访问多个相关应用系统时,只需要登录一次即可访问所有相互信任的应用系统的解决方案。在SSO环境下,用户不需要重复提供凭证信息(如用户名...

    cas4.2.7 实现其他系统和cas互相认证互信

    首先,理解CAS的工作原理至关重要。当用户尝试访问受CAS保护的应用时,会被重定向到CAS服务器进行登录。如果认证成功,CAS会返回一个服务票证(Service Ticket),这个票证是安全的,只能用于一次访问。应用接收到...

    CAS实现原理与例子

    "CAS实现原理与例子" CAS(Central Authentication Service,中央认证服务)是一种单点登录(Single Sign-On,SSO)机制,允许用户在访问不同的应用系统时,只需要输入一次用户名和密码。CAS实现原理与例子主要包括...

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    通过阅读源码,开发者可以深入了解CAS的工作原理,以及如何扩展和定制CAS功能。 4. **数据库连接相关jar包**: 如果你的认证信息存储在数据库中,你需要正确配置CAS服务器以连接到数据库。压缩包可能包含用于连接...

    CAS认证登录简单介绍

    【CAS认证登录简单介绍】 CAS(Central Authentication Service)是一种广泛使用的单点登录(SSO)框架,由耶鲁大学开发并开源,旨在提供一个安全、简单且可扩展的身份验证解决方案。CAS的目标是允许用户在访问多个...

    CASCASCASCASCASCASCASCAS

    【标签】:“cas”标签进一步确认了讨论的主题是关于CAS认证服务。 【压缩包子文件的文件名称列表】:在提供的压缩文件中,有两个目录名,“META-INF”和“edu”。 - "META-INF"是Java存档(JAR)文件的标准部分,...

    CAS SSO 原理

    综上所述,CAS SSO原理是通过中心化的认证服务器和分散的客户端协同工作,实现了用户只需一次登录即可访问多个应用系统的功能。这种设计既方便了用户,又简化了系统管理员的身份管理,同时保持了一定的安全性。然而...

    统一身份认证(CAS)简单说明与设计方案

    CAS 的工作原理是,当用户请求访问应用服务器时,CAS 服务器会检查用户的 Service Ticket 和 Ticket Granting Ticket,如果没有或不对,会重定向到 CAS 认证服务器的登录页面。用户在登录后,CAS 服务器会颁发 ...

    基于CAS的统一认证平台的设计与实现.pdf

    4. CAS认证流程: 用户尝试访问服务端应用时,服务端应用会重定向用户到CAS服务器进行认证。用户在CAS服务器上输入凭证后,成功验证身份后,CAS服务器会生成一个服务票据(Service Ticket),并将此票据返回给用户...

    cas单点才登出原理

    CAS(Central Authentication Service,中央认证服务)是一种广泛使用的开源单点登录(Single Sign-On, SSO)协议。它允许用户在一个应用系统中登录后,无需再次验证身份即可访问其他关联的应用系统。当用户在任一...

    CAS(Central Authentication Service、中央认证服务)

    这个过程涉及到的源码理解和工具使用,可以帮助开发者深入理解SSO的工作原理,以及如何将CAS集成到现有的IT环境中。对于大型企业或组织,CAS的实施可以显著提升用户访问的便利性和系统的安全性。

    cas-proxy认证

    ### CAS-Proxy 认证详解 #### 一、概述 CAS (Central Authentication Service) 是一...通过对 CAS-Proxy 认证的基本原理、配置方法以及实践案例的深入理解,可以帮助开发者更好地设计和实现基于 CAS 的单点登录系统。

    集成cas实现单点登录认证.zip

    本压缩包"集成cas实现单点登录认证.zip"显然包含了关于如何使用CAS(Central Authentication Service)框架集成SSO认证的资源。下面我们将详细探讨相关的知识点。 1. CAS简介:CAS是耶鲁大学开源的一个Web应用的...

    CAS单点登录Demo

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,SSO)框架,主要用于解决多个应用系统间的身份认证问题。在本文中,我们将深入探讨CAS单点登录的基本原理、工作流程以及...

    cas原理 webflow mvc ioc

    它通过引入中央认证服务器(CAS Server)的概念,为各个服务或应用提供统一的身份验证服务。当用户首次访问某个应用时,该应用会将用户重定向至CAS服务器进行身份验证;验证成功后,CAS服务器会向应用发放一张票据...

    Cas入门demo以及SpringSecurity集成CasDemo

    创建Spring Security配置类,声明使用CAS认证方式,并配置相关属性,如CAS服务器URL、服务验证URL等。 ```java @Configuration @EnableWebSecurity public class CasSecurityConfig extends ...

    CAS实现sso单点登录原理

    "CAS实现sso单点登录原理" CAS(Central Authentication Service)是Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于Web SSO)。CAS开始于2001年,并在2004年12月...

    cas原理.doc

    总的来说,CAS原理涉及到的身份验证机制、TGT和ST的概念,以及Spring Webflow在实现登录流程中的作用,都是理解CAS工作方式的关键点。通过定制化Spring Webflow配置,开发者可以根据需求扩展或调整CAS的默认行为,以...

    cas单点登录原理以及例子的搭建和实现

    而CAS Client则部署在客户端,对本地Web应用的受保护资源进行保护,当检测到未认证的用户请求时,会重定向用户至CAS Server进行身份验证。 CAS协议的基本流程如下:首先,CAS Client通过过滤器保护Web应用资源,...

Global site tag (gtag.js) - Google Analytics