`
junix1988
  • 浏览: 80176 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

耶鲁CAS Single Sign On

    博客分类:
  • java
阅读更多

耶鲁CAS Single Sign On- -

                                      

 

       耶鲁大学开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Service),是一个独立于平台的,易于理解的开源软件,支持代理功能。Spring Framework的Acegi安全系统支持CAS,并提供了易于使用的方案。

CAS的设计目标
       l、为多个Web应用提供单点登录基础设施,同时可以为非Web应用但拥有Web前端的功能服务提供单点登录的功能;
      2、简化应用认证用户身份的流程;
      3、将用户身份认证集中于单一的Web应用,让用户简化他们的密码管理,从而提高安全性;而且,当应用需要修改身份验证的业务逻辑时,不需要到处修改代码;

CAS的设计和实现
       CAS(Central Authentication Server)被设计成一个独立的Web应用。它目前的实现是运行在HTTPS服务器上的几个Java Servlet。通过三个URL来访问:Login URL,Validation URL和可选的Logout URL。下图是CAS的单点登录流程示意图:
 

点击查看原始大小 530 x 379


       为了使用CAS,Web应用重定向它的用户(或简单地创建一个超链接)到Login URL,例如https://secure.its.yale.edu/cas/servlet/login。用户也可以手工访问这个URL,如果希望预先验证会话。
       Login URL处理初步的认证工作,它提示用户输入NetID和密码,并用Kerberos服务器校验它们是否匹配。为了接下来能自动重新验证用户身份,CAS也会试图给浏览器回送Cookie(浏览器关闭后会自动过期)。这个Cookie用于识别已经成功登录的用户身份。
       使用这个可选的Cookie,CAS可以为用户实现对于多个Web应用单点登录的效果。这就是说,用户只需输入一次他的NetID和密码,即可访问任何使用CAS的资源服务。没有这个Cookie,当Web应用重定向用户到CAS时,用户每次都要输入NetID和密码。(用户也可以通过访问Logout URL,如https://secure.its.yale.edu/cas/servlet/logout,来要求CAS删除这个Cookie。)
       为了处理初步的身份认证,CAS也记录了用户被重定向时访问的service。可以这样做是因为CAS要求重定向或链接用户到Login URL的Web应用提供一个service的标志符(在上图中记为serviceID)。如果验证成功,CAS创建一个位数很长的随机数(我们称之为ticket)。CAS把这个ticket和成功登录的用户以及用户要访问的service联系起来。例如,如果用户peon重定向自service S,CAS创建ticket T,这个ticket T允许peon访问service S。这个ticket是个一次性的凭证;它仅仅用于peon,仅仅用于service S,并且只能使用一次,使用之后马上会过期。
       一旦完成了初步的身份验证,CAS重定向用户浏览器回到原来的Web应用URL。CAS之所以能记得原来的URL,是因为上面讨论的service ID作为一个"callback URL"。CAS重定向用户的浏览器回到原来的URL,并加上上面讨论的ticket作为请求参数。
       为了让讨论更加清楚,考虑下面的例子。假设用户在访问http://www.yale.edu/tp之前需要验证身份,我们把用户从http://www.yale.edu/tp重定向到下面的Login URL:
       https://secure.its.yale.edu/cas/servlet/login?service=http://www.yale.edu/tp/authenticate.jsp
JSP页面authenticate.jsp是网站资源的一部分。一旦完成了上面描述的初步身份验证,CAS用下面的URL重定向用户浏览器到这个JSP页面:
       http://www.yale.edu/tp/authenticate.jsp?ticket=opaque-ticket-string
       一旦收到请求,authenticate.jsp页面需要校验这个收到的ticket,它把tickect传送Validation URL(如http://secure.its.yale.edu/cas/servlet/validate)。authenticate.jsp页面需要使用JSSE向Validation URL发送请求并读取数据。当生成这个请求时,authenticate.jsp页面还需要把先前的service ID用service的参数名传送给Validation URL,例子如下:
       http://secure.its.yale.edu/cas/servlet/validate?ticket=T&service=S
       当CAS从Validation URL收到这个ticket,它检查自己内部数据库,看看是否保存过这个ticket。如果数据库有这个ticket,则进一步检查数据库中和ticket关联的service是否和刚收到的service相匹配。如果匹配,则向请求验证身份的应用URL返回NetID;否则拒绝验证这个请求。
       Validation URL向请求身份验证的应用URL返回数据的方式很简单。CAS用text/plain的应答方式返回两行数据;第一行是yes或no,取决于ticket验证是否通过。如果ticket通过验证,第二行则是成功通过身份验证的用户的NetID。如果ticket没有通过验证,第二行为空。例子如下:
       yes
       peon
       如果ticket通过验证,CAS立即删除该ticket,使它以后不能再使用。
       当完成了身份验证的循环流程,Web应用无需知道用户的密码即可校验用户身份。此外,如果用户浏览器接受Cookie,它将保留一个可用于多次向CAS验证用户身份的Cookie,让用户以后不用再输入NetID和密码。(目前,这个用于身份验证的Cookie保留8个小时。)
分享到:
评论

相关推荐

    CAS 单点登录(Single Sign On)

    CAS(Central Authentication Service,中央认证服务)是一种广泛使用的单点登录(Single Sign-On,SSO)框架,由耶鲁大学开发并开源。SSO允许用户在一个应用系统中登录后,无需再次验证身份即可访问其他相互信任的...

    耶鲁CasServer单点登录教程

    Yale Central Authentication Service (CAS) 是一个开源的身份验证框架,由耶鲁大学开发,主要用于实现单点登录(Single Sign-On, SSO)。SSO允许用户在一个系统上登录后,无需再次认证即可访问其他多个相互信任的...

    耶鲁大学单点CAS服务器

    耶鲁大学开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Server)被设计成一个独立的Web应用程序(cas.war)。该资源不仅提供部署在Tomcat服务器上的cas.war包(解压缩后在webapps目录下),而且...

    SSO Single_Sign-on__in_Action(cas)

    ### SSO (Single Sign-On) 原理与 CAS 实现 #### SSO 概念与重要性 单点登录(Single Sign-On, SSO)是一种让用户只需一次登录即可访问多个应用系统的认证机制。这种机制简化了用户体验,提高了工作效率,并在一定...

    SingleSign-On introduction

    - **持久性和可靠性**:CAS由耶鲁大学开发并维护,在全球范围内有着广泛的用户基础,特别是在高等教育领域。 - **轻量级的J2EE平台**:CAS的代码量相对较小(大约1000行),这使得其运行效率较高且易于部署。 - **...

    CAS 各种jar包

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,SSO)框架,由耶鲁大学开发并维护。它允许用户通过单一的登录验证来访问多个应用系统,从而简化了用户的登录过程,...

    cas -service -4.0.4 下载加所需的jar包

    Yale CAS - 耶鲁大学开发的单点登录(Single Sign On)系统称为CAS(Central Authentication Server)被设计成一个独立的Web应用程序(cas.war)。

    cas-client-2.0.11.zip_cas client_cas-clie_cas-client-2._java CAS

    CAS(Central Authentication Service)是耶鲁大学开发的一种开放源代码的单点登录(Single Sign-On,简称SSO)协议,用于网络应用中的身份验证。它允许用户在一个认证点登录后,无需再次输入凭证就能访问其他受保护...

    CAS单点登录的经典配置,以及多数据库的处理方案

    CAS单点登录是Single Sign-On(SSO)的一种实现,允许用户一次性进行认证之后,就访问系统中不同的应用;而不需要访问每个应用时,都重新输入密码。CAS单点登录产品具有很多优点,如减少用户在不同系统中登录耗费的...

    cas-server-3.4.10-release和cas-client-3.2.1-release两个

    CAS(Central Authentication Service)是一种基于Web的单一登录(Single Sign-On, SSO)协议,用于在多应用环境中统一用户认证。这个协议由耶鲁大学开发并开源,现在由Apereo基金会维护。标题提到的"cas-server-...

    cas-3.5.3 api 和cas-client-core-3.3.3 api chm

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,SSO)框架,由耶鲁大学开发并维护。该系统旨在简化Web应用的安全认证过程,允许用户通过一个统一的入口点登录,之后...

    cas客户端jar包

    CAS(Central Authentication Service)是耶鲁大学开发的一种基于Web的单点登录(Single Sign-On,简称SSO)协议。在企业或机构的信息系统环境中,它允许用户通过一次登录即可访问多个应用系统,无需多次输入用户名...

    单点登录cas服务器demo及springboot客户端demo

    单点登录(Single Sign-On,简称SSO)是一种身份验证机制,允许用户在一次登录后访问多个相互关联的应用系统,而无需再次输入凭证。在这个场景中,"cas-server"是中央认证服务(Central Authentication Service),...

    springboot+security+cas集成demo

    CAS(Central Authentication Service)是耶鲁大学开发的一个开源的身份验证系统,主要用于实现单一登录(Single Sign-On,SSO)。它允许用户通过一次登录,就能访问多个相互信任的应用系统,而无需多次输入用户名和...

    casclient-3.1.6源码

    耶鲁CAS客户端,即cas-client,是一个实现了CAS协议的Java库,允许开发者将SSO功能集成到自己的应用中。在这个"casclient-3.1.6源码"中,我们可以深入理解如何在实际应用中使用CAS服务。 一、CAS协议原理 CAS的核心...

    Yale CAS SSO DotNet Client

    "Yale CAS SSO DotNet Client" 是一个专为.NET框架设计的客户端库,用于集成耶鲁大学(Yale)的中央认证服务(Central Authentication Service, CAS)。CAS是一种开源的身份验证协议,它允许用户通过单一登录...

    cas

    CAS遵循单点登录(Single Sign-On, SSO)协议,允许用户通过一个认证点访问多个服务,而无需多次输入凭证。这种服务可以提高安全性,简化用户登录流程。 描述中提到的链接指向了一篇关于CAS的博客文章,虽然具体...

    cas-overlay-template-master.zip

    CAS(Central Authentication Service)协议是一种广泛使用的单点登录(Single Sign-On, SSO)协议,主要应用于网络身份验证。在给定的“cas-overlay-template-master.zip”文件中,包含了一个CAS服务器的服务端部署...

Global site tag (gtag.js) - Google Analytics