`

CAS单点登录登出原理

    博客分类:
  • SSO
 
阅读更多

一.单点登录概念     

    1.1 概念

    1.2 SSO组成

    1.3 技术实现思路

    1.4单点登录过程 

 

 

一.单点登录概念
1.1 概念 

单点登录,简称sso,single sign on主要用于多系统的集成,即在多个系统当中,用户只要用到一个中央服务器登录一次即可访问这些系统中的任何一个,无需多次登录。是目前比较流行的企业业务整合的解决方案之一。 
1.2 SSO组成 
一般SSO体系主要有3个 (1)多个用户 (2)多个Web应用 (3)SSO认证中心 1个(也就是我们的中央服务器)。其中多个用户访问不同的Web应用,是否需要登录由SSO认证中心来控制。   
1.3 技术实现思路: 
1.当用户第一次访问系统A的时候,因为还没有登录,会被引导到认证系统中进行登录; 
2.根据用户提供的登录信息,认证系统进行身份校验,如果通过校验,应该返回给用户一个认证的凭据--ticket; 
3.用户再访问别的应用的时候,就会将这个ticket带上,作为自己认证的凭据。 
4.应用系统接受到请求之后会把ticket送到认证系统进行校验,检查ticket的合法性。 
5.如果通过校验,用户就可以在不用再次登录的情况下访问应用系统2和应用系统3了。1.4单点登录过程 
CAS(Central Authentication Service)按照字面的意思就是中央认证服务。主要是为Web应用系统提供一种可靠的单点登录解决方案。 
CAS主要分为两个部分: CAS server和CAS client 也就是CAS的服务器端和CAS的客户端。同时CAS服务器端需要独立部署,CAS服务器会处理用户名/密码等凭证。 
SSO访问流程主要有以下的形式: 
1.访问服务:CAS客户端发送请求访问应用系统的服务资源。 
2.定向认证:CAS客户端会重定向用户请求到CAS服务器 。   
3.用户认证:用户身份验证。 
4.发放票据:CAS服务器会产生一个随机的Service Ticket,并且允许客户端访问。 
6.传输用户信息:CAS服务器传输用户认证结果信息给客户端。 

例如一个用户还没有登录过任何的系统,如图:

此时用户再登录系统(可能是本系统,可能是其他系统):

文字再解释这个过程:

CAS Client与受保护的客户端应用部署在一起,以Filter方式保护Web应用的受保护资源,过滤从客户端发来的每一个请求。 
同时,CAS Client会分析HTTP请求中是否包含请求Service Ticket,如果没有,则说明这个用户是没有经过认证的;于是,CAS Client会重定向用户请求到CAS Server,并且传递Service(要访问的目的资源地址)。 
用户认证过程,如果用户提供了正确的Credenties(输入了正确的帐号密码),CAS Server随机生成一个相当长度,唯一,不可伪造的Server Ticket,并且 缓存以待将来认证。并且重定向用户到Service所在地址(附带刚才产生的Service Ticket),并且为客户端浏览器设置一个Ticket Granted Cookie(TGC)。 
另外的一种解释: 
Step1: 用户第一次访问Biz系统主页http://bizserver/index.jsp ;部署在Biz系统上的CASFilter发现用户尚未登录,将用户重定向的CAS登录界面 https://casserver/cas/servlet/login?service=http://bizserver/index.jsp ,同时在重定向的URL上用service参数将用户的目标地址传给CAS服务器。 

Step2:用户在CAS的登录页上输入用户名密码登录,CAS服务器认证通过后,生成一个ticket,并带在目标地址的尾部返回客户端的浏览器redirect:http://bizserver/index.jsp?ticket=casticket. 

Step3:客户端浏览器获得CAS服务器的认证应答,取得凭证ticket后,使用重定向的链接http://bizserver/index.jsp?ticket=casticket访问Biz服务 

Step4: BizServer上的CASFilter再次过滤访问请求,并获得ticket凭证。Filter将使用该凭证通过URL https://casserver/cas/servlet/validate?service= http://bizserver/index.jsp &ticket=casticket 向CAS认证中心确认对应的服务请求和凭证是否有效。根据CAS服务器返回的结果,如果凭证有效,则CASFilter允许用户进入http://bizserver/index.jsp 所指向的页面;否则,再次重定向到https://casserver/cas/servlet/login?service=http://bizserver/index.jsp 上要求用户进行认证。 

补充: 
CAS 的SSO实现方式 可以理解为:1个Cookie和N个Session。CAS Server创建cookie,在所有应用认证时使用,各应用通过创建各自的Session来标识用户是否已经登录。 
用户在一个应用验证通过后,以后用户在同一个浏览器中访问此应用的时候,客户端应用中的过滤器会在Session中读取用户的信息,所以就不会去CAS Server认证。如果在此浏览器访问别的Web应用的时候,客户端应用中的过滤器在session中读取不到用户信息,就会去CAS Server的login接口认证,但是这个时候CAS Server会读取到浏览器传来的cookie(TGC),所以CAS Server不会要求用户去登录页面登录。 

术语解释: 
1.TGT(Ticket Grangting Ticket):TGT是CAS为用户签发的登录票据,拥有了TGT,用户就可以证明自己在CAS成功登录过。TGT封装了Cookie值以及此Cookie值对应的用户信息。用户在CAS认证成功后, CAS生成cookie(叫TGC),写入浏览器,同时生成一个TGT对象,放入自己的缓存,TGT对象的ID就是cookie的值。当HTTP再次请求到来时,如果传过来的有CAS生成的cookie,则CAS以此cookie值为key查询缓存中有无TGT ,如果有的话,则说明用户之前登录过,如果没有,则用户需要重新登录。 2.TGC(Ticket-granting cookie):存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(Https),是CAS Server用来明确用户身份的凭证。 
3.ST(Service Ticket):ST是CAS为用户签发的访问某一service的票据。用户访问service时,service发现用户没有ST,则要求用户去CAS获取ST。用户向CAS发出获取ST的请求,如果用户的请求中包含cookie,则CAS会以此cookie值为key查询缓存中有无TGT,如果存在TGT,则用此TGT签发一个ST,返回给用户。用户凭借ST去访问service,service拿ST去CAS验证,验证通过后,允许用户访问资源。 
4.PGT:绑定一个用户的特定服务,使其拥有向CAS Server申请,获得PT的能力。4.PGT(Proxy Granting Ticket):Proxy Service的代理凭据。用户通过CAS成功登录某一Proxy Service后,CAS生成一个PGT对象,缓存在CAS本地,同时将PGT的值(一个UUID字符串)回传给Proxy Service,并保存在Proxy Service里。Proxy Service拿到PGT后,就可以为Target Service(back-end service)做代理,为其申请PT。 
5.PGTIOU(Proxy Granting Ticket I Owe You);PGTIOU是CAS协议中定义的一种附加票据,它增强了传输、获取PGT的安全性。 
PGT的传输与获取的过程:Proxy Service调用CAS的serviceValidate接口验证ST成功后,CAS首先会访问pgtUrl指向的https url,将生成的 PGT及PGTIOU传输给proxy service,proxy service会以PGTIOU为key,PGT为value,将其存储在Map中;然后CAS会生成验证ST成功的xml消息,返回给Proxy Service,xml消息中含有PGTIOU,proxy service收到Xml消息后,会从中解析出PGTIOU的值,然后以其为key,在map中找出PGT的值,赋值给代表用户信息的Assertion对象的pgtId,同时在map中将其删除。 
6.PT(Proxy Ticket): PT是用户访问Target Service(back-end service)的票据。如果用户访问的是一个Web应用,则Web应用会要求浏览器提供ST,浏览器就会用cookie去CAS获取一个ST,然后就可以访问这个Web应用了。如果用户访问的不是一个Web应用,而是一个C/S结构的应用,因为C/S结构的应用得不到cookie,所以用户不能自己去CAS获取ST,而是通过访问proxy service的接口,凭借proxy service的PGT去获取一个PT,然后才能访问到此应用。 

TGT、ST、PGT、PT之间关系: 
1)ST是TGT签发的。用户在CAS上认证成功后,CAS生成TGT,用TGT签发一个ST,ST的ticketGrantingTicket属性值是TGT对象,然后把ST的值redirect到客户应用。 
2)PGT是ST签发的。用户凭借ST去访问Proxy service,Proxy service去CAS验证ST(同时传递PgtUrl参数给CAS),如果ST验证成功,则CAS用ST签发一个PGT,PGT对象里的ticketGrantingTicket是签发ST的TGT对象。 
3)PT是PGT签发的。Proxy service代理back-end service去CAS获取PT的时候,CAS根据传来的pgt参数,获取到PGT对象,然后调用其grantServiceTicket方法,生成一个PT对象。 

 

分享到:
评论

相关推荐

    cas单点才登出原理

    接下来,我们将详细探讨CAS单点登出的原理。 首先,理解SSO的基本流程: 1. 用户打开一个受CAS保护的应用系统A。 2. 应用系统A发现用户未登录,重定向到CAS服务器。 3. 用户在CAS服务器上输入凭证并验证通过。 4. ...

    cas单点登录登出学习

    单点登出(Single Sign-Out,SSO)功能则涉及到清理所有已登录应用的会话,确保用户在一处登出时,所有关联的系统也会同步登出。Cas 提供了两种登出模式:前端通道(Front Channel)和后端通道(Back Channel)。...

    CAS单点登录demo

    6. CAS单点登出: - 当用户在任一应用系统中登出时,CAS Server会清除所有已签发的Ticket,确保用户在所有系统中都被登出。 通过这个“CAS单点登录demo”,你可以学习并实践如何设置和配置CAS环境,理解其工作流程...

    Java进阶SSO单点登录技术CAS-快速上手与原理探究视频教程

    3、 单点登录和单点登出的实现和测试 4、 单点登录、登出的原理探究等 知识点 l 相关概念或术语:SSO、CAS、TGT、TGC、ST l CAS Server服务端的搭建和配置 l CAS Client客户端的搭建和配置 l 单点登录的测试 l 单点...

    struts2+cas单点登陆例子

    Struts2和CAS单点登录(SSO)的集成是一个常见的Web应用安全实践,它允许用户在一个系统登录后,无须再次输入凭证就能访问其他相互信任的系统。在这个例子中,我们将深入探讨如何在MyEclipse环境下使用Struts2框架与...

    CAS单点登录实例

    总的来说,CAS单点登录实例的搭建涉及多个步骤,从下载和配置必要的jar包,到修改配置文件,再到整合客户端应用,每一个环节都需要对CAS协议和SSO原理有深入理解。同时,安全性和用户体验也是实施过程中不可忽视的...

    CAS多数据库配置单点登录

    CAS多数据库配置单点登录 CAS(Central Authentication Service)是一种流行的单点登录解决方案,能够提供安全、...通过了解CAS单点登录的原理和配置步骤,可以更好地应用CAS单点登录,提高企业应用的安全性和可靠性。

    cas单点登录官方demo

    在这个"cas单点登录官方demo"中,我们可以深入理解CAS的工作原理和实现方法。 首先,单点登录的核心概念是“一次登录,全局通行”。用户在进入系统时只需要验证一次身份,之后在访问其他关联应用时,系统会自动识别...

    CAS单点登录多语言整合文档+源码

    这个压缩包文件包含的是关于CAS单点登录的多语言整合文档和源码,特别提到了PHP客户端和Java客户端的整合。 首先,我们来深入理解一下CAS的基本工作原理。当用户尝试访问受CAS保护的应用时,会被重定向到CAS服务器...

    cas实现单点登录,登出(java和php客户端)

    标题中的“cas实现单点登录,登出(java和php客户端)”指的是使用CAS(Central ...通过理解和实践这些知识点,开发者可以有效地在Java和PHP环境中实现CAS单点登录和登出功能,提升用户体验并加强系统的安全性。

    CAS单点登录SSO( Single Sign-On)

    CAS单点登录协议是解决多应用系统认证问题的有效方案。通过深入学习和理解CAS的工作机制,开发者能够更好地实现和维护安全、高效的SSO系统。同时,源码分析有助于定制化需求和故障排查,确保CAS在实际环境中的稳定...

    cas单点登录

    CAS(Central Authentication Service...总之,CAS单点登录是提高用户体验和安全管理的重要工具,其核心在于集中化的身份验证和票证管理。理解和掌握CAS的工作原理及实施要点,有助于在实际项目中有效地应用这一技术。

    cas实现单点登录

    #### 三、CAS单点登出原理 CAS的单点登出机制同样基于中心化管理的概念。当用户在一个应用中发起登出操作时,CAS服务器会协调所有已登录的应用程序同步登出,从而确保用户在所有相关应用中的会话都被清除。具体流程...

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

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,简称SSO)框架,主要用于解决网络应用中的身份验证问题。本压缩包提供了CAS服务端自定义认证的实现,以及CAS客户端的配置...

    CAS单点登录

    6. **测试与调试**:使用CAS单点登录实例详细步骤.pdf文档中的指南进行测试,确保用户可以正常登录和退出所有应用。 **CAS扩展功能** 除了基本的单点登录,CAS还支持以下功能: - **多因素认证**:可以通过短信、...

    SSO之CAS单点登录

    **CAS单点登录的工作原理** CAS的核心概念是票据(Ticket)。当用户尝试访问受CAS保护的应用时,应用会重定向用户到CAS服务器进行身份验证。如果用户通过了身份验证,CAS会返回一个服务票据(Service Ticket)给...

    SSO之CAS单点登录实例演示

    通过"SSO之CAS单点登录实例演示",我们可以实践这些步骤,了解如何设置和运行一个基本的CAS环境,进一步理解SSO的工作原理和实际应用。这个实例将帮助我们更好地掌握如何为自己的应用实现SSO功能,提升系统的安全性...

    cas单点登录 客户端

    在"cas单点登录 客户端"这个主题下,我们将深入探讨CAS SSO的工作原理,客户端配置,以及相关的组件。 首先,CAS的核心功能是在用户访问受保护的应用时提供统一的身份验证服务。用户只需要登录一次,就能访问所有...

    cas单点登录相关资料

    为了实现CAS单点登录,开发者通常需要配置CAS服务器,如Apereo CAS,然后在各个应用中集成CAS客户端库。此外,还需要考虑以下几点: - **安全性配置**:确保CAS服务器和通信过程的安全,例如使用HTTPS、加密TGT等。...

Global site tag (gtag.js) - Google Analytics