`

cas工作原理

    博客分类:
  • cas
阅读更多

下面分析下CAS SSO(以3.4.5为例)的基本工作原理。先假定一个应用场景,如图,有两个Web应用分别是webapp1、webapp2(Spring Security 3应用) 。一个认证服务器CAS(假设部署在http://domain-cas/cas-server)。我们看三个典型阶段:

 

 

一、未登录用户访问webapp1应用

1. 用户发起起始请求到某一应用。如网址 http://domain-webapp1/page1

2. 作为CAS Client的webapp1应用,CAS_FILTER过滤器将截获请求,检查是否已登录。如已登录,直接返回请求响应。如没有,返回302浏览器redirect转向CAS认证服务器,并带上自己应用作为cas client已经配好的service地址。如

http://domain-cas/cas-server/?service=http://domain-webapp1/j_spring_cas_security_check

 

对SS3的应用webapp1来说,service地址的配置要点如下:

 

[html] view plaincopy
  1. <beans:bean id="casService" class="org.springframework.security.cas.ServiceProperties">   
  2.     <beans:property name="service" value="<span style="font-size:12px;"><span>http://domain-webapp1/j_spring_cas_security_check</span></span>"/>   
  3. </beans:bean>   

 

 

 

3. CAS首先查看用户请求是否携带CASTGC名称的Cookie(CASTGC这个名称在CAS中的ticketGrantingTicketCookieGenerator.xml中可配置)。如没有或已过期认证未通过,输出CAS登录页面

 

4. 用户输入认证信息提交,如认证通过,CAS设置CASTGC Cookie。(类似CASTGC=TGT-2-IsNtxgv3h9dVi44B3zprQm5AGFbKB3ZBMGjtVumgC5E10VqbHF-cas; path=/cas; domain=localhost)  同时redirect到webapp1应用的service地址,并附上CAS为此service设置的ticket。如


http://domain-webapp1/j_spring_cas_security_check?ticket=ST-2-JWzXJKrXXGy7vAm6rEhA-cas 


5. webapp1和CAS进行交互,验证ticket有效后,再次redirect用户浏览器到用户起始请求地址:http://domain-webapp1/page1

redirect到cas进行校验的url配置要点如下:
 
[html] view plaincopy
  1.     <beans:bean id="casTicketValidator" class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">   
  2.         <beans:constructor-arg value="http://domain-cas/cas-server/"/>   
  3. </beans:bean>   
这个校验接口,在CAS中的cas.properties文件中定义
 
 
[html] view plaincopy
  1. cas.securityContext.ticketValidator.casServerUrlPrefix=http://domain-cas/cas-server/  

 




6. 此时webapp1应用已经有了验证通过的用户信息,redirect返回正常页面内容。


二、已登录用户首次访问webapp2应用


7. 用户发起起始请求,到某一应用。网址 http://domain-webapp2/page2

8. webapp2应用按常规(如根据session)检查是否已经登录。 如没有,则redirect用户浏览器转向CAS认证服务器,并带上自己的spring cas client已经配好的service地址。如

http://domain-cas/cas-server/?service=http://domain-webapp2/j_spring_cas_security_check

9. CAS首先查看用户浏览器是否携带CASTGC Cookie,此时webapp1已为浏览器设置,如CASTGC有效验证通过,则redirect到webapp2应用的service地址,并附上CAS为此service设置的ticket。

10. webapp2和CAS进行交互,验证ticket有效后,再次redirect用户浏览器到用户起始请求地址:http://domain-webapp2/page2

11. 此时webapp2应用已经有了验证通过的用户信息,返回正常页面内容。


三、Logout情况
假设用户在webapp1和webapp2中都访问过,此时从webapp1中登出。spring cas client所做的工作是:
1. webapp1首先清除自己应用的session用户登录信息。
2. 然后访问CAS的 /logout接口,清除CAS中的登录信息。同时CAS向所有service发出注销请求(CAS Server端,参见org.jasig.cas.web.LogoutController,其调用org.jasig.cas.CentralAuthenticationServiceImpl 的destroyTicketGrantingTicket方法,最后调用org.jasig.cas.authentication.principal.AbstractWebApplicationService的logOutOfService方法。CAS Client端,参见cas-client-core jar包中的org.jasig.cas.client.session.SingleSignOutFilter这个过滤器在SS 配置文件中配置),删除CAS Client中的session,清除登录信息,因此webapp2中的登录信息也将清除。
3. 此时用户如再次访问webapp2时,将转向CAS登录页面。
分享到:
评论

相关推荐

    CAS原理和配置过程

    ### CAS原理详解 CAS(Central Authentication Service)是一种开放源代码的单点登录协议和服务实现,广泛应用于企业级应用系统中。其主要目的是提供一个统一的身份验证解决方案,使得用户只需要在一个地方进行登录...

    cas认证原理

    CAS工作原理 当用户首次尝试访问一个受CAS保护的应用时,应用服务器会检查用户浏览器中是否存在有效的ST。如果没有,用户会被重定向到CAS认证服务器的登录页面。用户提交凭证(如用户名和密码)之后,通过安全认证,...

    cas java cas java 实例

    下面我们将详细探讨CAS的核心概念、工作原理以及如何在Java环境中实现和使用CAS。 1. CAS核心概念: - 服务(Service):在CAS术语中,服务是指请求验证的Web应用。当用户尝试访问受保护的资源时,会被重定向到CAS...

    cas单点登录需要的jar包

    CAS(Central Authentication...总的来说,要实现基于CAS的单点登录,开发者需要正确配置和使用相关的jar包,并理解CAS的工作原理,这样才能确保系统的顺利运行。对于Java Web开发者来说,熟悉这些知识点是至关重要的。

    CAS实现原理与例子

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

    CAS单点登录demo

    在本“CAS单点登录demo”中,我们将深入探讨CAS的工作原理、配置步骤以及如何实现客户端与服务器端的交互。 1. CAS工作原理: CAS的核心思想是集中式的身份验证,用户只需在一个地方进行登录,之后访问其他已经...

    cas-server-3.5.0-release

    【描述】中的“cas-source-code”表明这个压缩包包含了CAS服务的源码,这为开发者提供了深入理解CAS工作原理和进行自定义开发的机会。"cas-server-webapp-3.5.0.war"是一个Web应用程序档案(WAR),它是Java Web应用...

    cas-server-4.0.0-release.rar

    总的来说,"cas-server-4.0.0-release.rar" 提供的资源对于想要实施单点登录解决方案或者研究CAS服务器工作原理的IT从业者来说非常有价值。通过深入研究源码和实际部署,可以提升对SSO技术的理解,并能灵活应用于...

    CAS之SSO配置手册

    **CAS工作原理与协议** CAS的运行机制主要包括两个核心组件:CAS Server和CAS Client。CAS Server作为认证中心,处理用户的登录验证,而CAS Client则部署在各个需要保护的应用中,拦截并处理对受保护资源的访问请求...

    CAS单点登录服务器配置详情

    ### CAS单点登录服务器配置详解 #### 一、CAS单点登录概述 CAS(Central Authentication Service)是一种开放源代码的单点登录协议...同时,还阐述了CAS的基本工作原理,帮助读者更好地理解CAS的工作流程和技术细节。

    cas单点登录代码例子 有文档 服务端客户端例子 亲测可用

    阅读并遵循文档的指导,对于理解CAS工作原理和实际操作至关重要。 总的来说,这个压缩包提供了一个完整的CAS SSO实现案例,对于学习和部署CAS非常有帮助。你可以通过这个例子了解CAS的工作流程,如何与服务端和...

    cas实现单点登录服务端及客户端

    5. CAS工作原理 - 用户首次访问受保护的资源时,会被重定向到CAS服务器进行身份验证。 - 在CAS服务器验证成功后,会返回一个服务票证(ST)给浏览器。 - 浏览器带着ST请求客户端应用,客户端应用会向CAS服务器...

    CAS的原理分析

    CAS的原理分析

    cas-server-服务端源码.zip

    总的来说,这个源码资源对于想深入了解SSO技术、CAS工作原理,或者打算对CAS进行二次开发的IT从业者非常有价值。通过深入阅读源码,可以掌握CAS的内部机制,提升网络安全和身份验证方面的专业技能。

    CAS单点登录系统,集成dubbo服务.zip

    1. CAS工作原理:理解CAS的协议流程,包括如何生成和验证Ticket,以及如何处理服务间的票证传递。 2. Spring Boot的使用:了解如何创建Spring Boot应用,配置启动类,以及如何使用Spring Boot的自动配置特性。 3. ...

    自定义客户端登录CAS服务器-iframe实现

    标题中的“自定义客户端登录CAS服务器-iframe实现”是指在客户端应用中集成中央认证...总之,这个主题涉及到了Web应用安全、身份验证、单点登录协议和前端开发技术,对于理解CAS工作原理和实现SSO有很重要的学习价值。

Global site tag (gtag.js) - Google Analytics