`

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

    博客分类:
  • CAS
 
阅读更多
转:http://apps.hi.baidu.com/share/detail/2037575

1.    单点登录概述
所谓单点登录(SSO),只当企业用户同时访问多个不同(类型的)应用时,他们只需要提供自身的用户凭证信息(比如用户名/密码)一次,仅仅一次。SSO解决方案(比如,CAS)负责统一认证用户,如果需要,SSO也可以完成用户的授权处理。可以看出,当企业用户在不同的应用间切换时,他们不用再重复地输入自身的用户凭证了。在实施SSO后,所用的认证操作都将交给SSO认证中心。现有的SSO解决方案非常多,比如微软的MSN Passport便是典型的SSO解决方案,各Java EE容器都提供了自身的专有SSO能力。

2.    CAS的总体架构
1.     CAS简介
CAS(中央认证服务)是建立在非常开放的协议之上的企业级SSO解决方案。诞生于2001年,在2002年发布了CAS2.0协议,这一新的协议提供了Proxy(代理)能力,此时的CAS2.0支持多层SSO能力。到2005年,CAS成为了JA-SIG旗下的重要子项目。由于CAS2.0版本的可扩展能力不是非常完美,而且他的架构设计也不是很卓越,为了使得CAS能够适用于更多场合,JA-SIG打算开发出同时遵循CAS1.0和CAS2.0协议的CAS3.X版本。

现在的CAS3全面拥抱Spring技术,比如Spring DI容器和AOP技术、Spring Web MVC、Spring Web Flow、Spring Ldap Template等。

通常,CAS3由两部分内容构成:CAS3服务器和CAS客户端。由于CAS2.0协议借助于XML数据结构与客户进行交互,因此开发者可以使用各种语言编写的CAS3客户与服务器进行通信。CAS3服务器采用纯Java开发而成,它要求目标运行环境实现了Servlet2.4+规范、提供Java SE 1.4+支持。如果宿主CAS3服务器的目标Java EE容器仅仅实现了Servlet2.3-规范,则在对CAS3服务器进行少量的改造后,CAS3也能运行其中。

运行时,CAS3服务器仅仅是一个简单的Web应用,使用者只需要将cas.war直接丢到目标Java EE容器后,即完成了CAS3的部署。

2.     CAS词汇概念
TGC(ticket-granting cookie)--------- 受权的票据证明
KDC( Key Distribution Center ) ---------- 密钥发放中心
Service ticket(ST) --------- 服务票据, 由 KDC 的 TGS 发放。 任何一台 Workstation 都需要拥有一张有效的 Service Ticket 才能访问域内部的应用 (Applications) 。 如果能正确接收 Service Ticket ,说明在 CASClient-CASServer 之间的信任关系已经被正确建立起来,通常为一张数字加密的证书
Ticket Granting tieckt(TGT) --------- 票据授权票据,由 KDC 的 AS 发放。即获取这样一张票据后,以后申请各种其他服务票据 (ST) 便不必再向 KDC 提交身份认证信息 ( 准确术语是 Credentials) 。
authentication service (AS) --------- 认证用服务,索取 Crendential ,发放 TGT
ticket-granting service (TGS) --------- 票据授权服务,索取 TGT ,发放 ST

3.     CAS工作原理
CAS的单点登录的认证过程,所用应用服务器受到应用请求后,检查ST和TGT,如果没有或不对,转到CAS认证服务器登录页面,通过安全认证后得到ST和TGT,再重新定向到相关应用服务器,在回话生命周期之内如果再定向到别的应用,将出示ST和TGT进行认证,注意,取得TGT的过程是通过SSL安全协议的。

如果通俗形象地说就是:相当于用户要去游乐场,首先要在门口检查用户的身份 ( 即 CHECK 用户的 ID 和 PASS), 如果用户通过验证,游乐场的门卫 (AS) 即提供给用户一张门卡 (TGT)。

这张卡片的用处就是告诉游乐场的各个场所,用户是通过正门进来,而不是后门偷爬进来的,并且也是获取进入场所一把钥匙。

现在用户有张卡,但是这对用户来不重要,因为用户来游乐场不是为了拿这张卡的而是为了游览游乐项目,这时用户摩天楼,并想游玩。

这时摩天轮的服务员 (client) 拦下用户,向用户要求摩天轮的 (ST) 票据,用户说用户只有一个门卡 (TGT), 那用户只要把 TGT 放在一旁的票据授权机 (TGS) 上刷一下。

票据授权机 (TGS) 就根据用户现在所在的摩天轮,给用户一张摩天轮的票据 (ST), 这样用户有了摩天轮的票据,现在用户可以畅通无阻的进入摩天轮里游玩了。

当然如果用户玩完摩天轮后,想去游乐园的咖啡厅休息下,那用户一样只要带着那张门卡 (TGT). 到相应的咖啡厅的票据授权机 (TGS) 刷一下,得到咖啡厅的票据 (ST) 就可以进入咖啡厅

当用户离开游乐场后,想用这张 TGT 去刷打的回家的费用,对不起,用户的 TGT 已经过期了,在用户离开游乐场那刻开始,用户的 TGT 就已经销毁了 。

3.    CAS的实现原理
由于CAS是基于Cookie的服务,所以它使用了Spring CookieGenerator来生成相应Cookie,下面的代码段摘自与CAS服务器的WEB-INF/中的cas-server.xml配置文件。

<bean id="ticketGrantingTicketCookieGenerator"
              class="org.springframework.web.util.CookieGenerator">
              <property name="cookieSecure" value="true" />
              <property name="cookieMaxAge" value="-1" />
              <property name="cookieName" value="CASTGC" />
              <property name="cookiePath" value="/cas" />
       </bean>

一旦用户登录到CAS服务器后,可以借助于URL为/cas/logout的地址退出,并且这种logout结果将导致浏览器中已存储的Cookie被销毁掉,即销毁CAS与当前用户间已建立的信任关系(Web SSO会话)。

1.     AuthenticationHandler认证处理器
浏览项目的web.xml,可以发现如下内容:

<context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>
                     /WEB-INF/applicationContext.xml,
                     /WEB-INF/deployerConfigContext-acegi.xml
              </param-value>
       </context-param>
       <listener>
              <listener-class>
                     org.jasig.cas.web.init.SafeContextLoaderListener
              </listener-class>
       </listener>

SafeContextLoaderListener实现了SafeContextListener,它借助于ContextLoader -Listener装载Spring DI容器。这样做的原因是因为Spring在通过ContextLoaderLitener启动时可能出现异常,造成整个CAS不能正常启动,经过SafeContextLoaderListener,则在异常发生时,CAS服务器也可以启动。

在deployerConfigContext.xml中,可以看到只定义了一个Bean:

<beans>
       <bean id="authenticationManager"
              class="org.jasig.cas.authentication.AuthenticationManagerImpl">
              <property name="credentialsToPrincipalResolvers">
                     <list>
                            <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" />
                            <bean class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" />
                     </list>
              </property>
              <property name="authenticationHandlers">
                     <list>
                            <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" />
                            <bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
                     </list>
              </property>
       </bean>
</beans>

SimpleTestUsernamePasswordAuthenticationHandler的作用是如果用户名与密码输入一样,则通过系统认证。这个是开发过程中常用的一个handler,但是在开发完毕后应该除去。

AuthenticationManagerImpl负责认证用户,比如一个admin/admin用户是否合法就是它来验证的。AuthenticationManagerImpl对象会借助于他引用的credentialsToPr -incipalResolvers和authenticationHandlers集合完成用户的认证工作。Authentication -Handlers负责完成用户认证,而credentialsToPrincipalResolvers负责构建认证结果。其中,并不是authenticationHandlers的全部集合都参与到用户认证中,一旦某个AuthenticationHandler成功完成用户的认证,则认证进程就到此为止,进而转到credenti -alsToPrincipalResolvers来构建认证结果。credentialsToPrincipalResolvers的过程也类似于此。

2.     CAS的时序图

  • 大小: 5.8 KB
分享到:
评论

相关推荐

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

    统一身份认证(CAS)简单说明与设计方案 统一身份认证(CAS)是一种企业级的单点登录(SSO)解决方案,旨在提供一种统一的身份认证机制,以便用户在访问多个不同的应用时只需要提供一次用户凭证信息。CAS 是建立在...

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

    从提供的文件内容来看,文件标题为《基于CAS的统一认证平台的设计与实现》,描述部分重复了标题,而标签则是“CAS 统一认证 平台 设计与实现”。虽然这部分内容中存在OCR扫描错误和符号,我们可以提炼出关于基于CAS...

    cas-proxy认证

    通过本文档的学习,我们可以了解到 CAS-Proxy 认证是一种高效且安全的单点登录解决方案,尤其适用于需要跨多个后端服务进行认证的复杂应用场景。通过对 CAS-Proxy 认证的基本原理、配置方法以及实践案例的深入理解,...

    net_proxy_demo.rar_CAS_breathkbl_sincedld_金智的cas_金智统一认证

    金智CAS(Central Authentication Service)认证系统是为了解决这一问题而设计的一种统一身份验证框架。CAS是一种开源项目,旨在简化Web应用的安全管理,通过单一登录(Single Sign-On, SSO)功能,使用户只需一次...

    统一用户认证系统设计方案.rar

    综上所述,统一用户认证系统设计方案旨在构建一个高效、安全的SSO系统,它涵盖了用户身份管理、认证流程设计、安全机制构建等多个方面,是现代企业信息化建设的重要组成部分。通过这样的系统,企业可以提升内部效率...

    CAS 协议3.0

    CAS(Central Authentication Service)协议3.0是一个用于网络身份认证的开源协议,其设计目的是为了实现单点登录环境。在这一协议中,用户只需要进行一次身份验证,便可以获得对多个应用系统的访问权限。这种方式...

    cas认证原理[参考].pdf

    CAS客户端则集成在各个应用系统中,负责与服务器通信并处理认证结果。 - **CAS服务器**:基于Java构建,兼容Servlet 2.4+规范,运行在Java SE 1.4+环境中。部署简单,只需将cas.war文件部署到Java EE容器即可。 -...

    sonar-cas-plugin sso认证插件

    总结来说,Sonar-CAS插件是SonarQube与CAS集成的关键,它提供了安全、便捷的身份验证解决方案,增强了大型组织内部的代码质量管理系统的安全性。正确配置和使用此插件,可以极大地优化用户登录体验,同时强化企业的...

    CAS+Shiro实现认证授权

    在IT行业中,安全是至关...Shiro处理应用内部的授权,而CAS则负责跨应用的统一认证,两者协同工作,可以构建出高效且安全的多应用环境。通过学习和实践这两种技术的结合,开发者可以提升其在Web安全领域的专业能力。

    sso cas server原始代码

    5. **可扩展性**:CAS服务器的设计允许开发者添加自定义认证模块,以适应不同的身份验证需求,例如LDAP、Active Directory、数据库等。 6. **安全特性**:CAS服务器使用HTTPS确保通信安全,同时支持票证的加密和...

    cas-server4.2.7数据库配置相关文件以及说明

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录(Single Sign-On,SSO)系统,主要用于统一认证管理。CAS服务器4.2.7版本的数据库配置涉及到多个环节,包括数据库连接、用户数据存储与读取等...

    CAS集成手册%28.net版%29.doc

    CAS(Central Authentication Service)是一种中心化的身份认证服务,旨在统一管理内部网络中的各个异构系统之间的用户身份验证。它的主要目标是让用户只需登录一次,即可在所有认可CAS认证的系统中无缝地进行访问,...

    cas-server-release4.zip

    6. **安全性**:CAS设计时考虑了安全因素,如使用HTTPS进行通信,防止中间人攻击,票证的加密和签名确保数据的安全传输。 在"cas-server-release4"的源码中,我们可以看到以下几个关键部分: 1. **CAS服务器核心...

    cas-6.1.5-source.tar.gz

    CAS(Central Authentication Service)是一个开放源码的单点登录(Single Sign-On,SSO)框架,主要用于实现网络应用之间的统一身份验证。CAS-6.1.5是该框架的一个稳定版本,提供了许多改进和新特性,以提升安全性...

    cas单点登录例子说明

    总结来说,CAS单点登录系统提供了一种统一的身份验证解决方案,简化了用户访问多应用的流程,同时减轻了系统管理员的维护工作。通过深入理解和定制化CAS,可以进一步优化用户体验和系统管理效率。然而,要注意在实现...

    cas开源单点登录框架

    综上所述,CAS-4.0.1是一个强大的SSO解决方案,它的设计和实现考虑了灵活性、可扩展性和安全性,适合各种规模的组织使用。通过深入理解并应用这些知识点,开发者可以有效地构建和维护一个安全、高效的单点登录环境。

    Cas登录客户端jAR包

    Cas协议是开源的,主要用于解决网络环境中用户的统一身份验证问题。通过Cas,用户只需要在首次登录时验证身份,之后便可以在多个支持Cas的应用之间自由切换,而无需重复登录。 2. **Cas客户端组件**: "cas-...

    单点登录cas3.5.6版本资源

    9. **扩展性**:CAS设计为可扩展,允许添加自定义认证和授权模块,对接各种身份存储(如LDAP、数据库、Active Directory等),并能与其他系统集成,如SAML、OAuth、OpenID Connect等。 10. **社区支持**:CAS有一个...

Global site tag (gtag.js) - Google Analytics