`
wake.up
  • 浏览: 13803 次
社区版块
存档分类
最新评论

CAS单点登录(一)---CAS原理

    博客分类:
  • cas
阅读更多


 采用CAS原理构建单点登录

单 点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户 只需要登录一次就可以访问所有相互信任的应用系统。IBM对SSO有一个形象的解释“单点登录、全网漫游”。

 

 1.CAS 介绍

 

CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目。CAS 具有以下特点:

  • 开源的企业级单点登录解决方案。 

  • CAS Server 为需要独立部署的 Web 应用。 

  • CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

 

2.CAS 原理和协议

 

从 结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工 作;CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。图1 是 CAS 最基本的协议过程:


图 1. CAS 基础协议

CAS Client 与 受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。

(1)对于访问受保护资源的每个 Web 请求,CAS Client 会分析该请求 的 Http 请求中是否包含 Service Ticket,如果没有,则说明当前用户尚未登录。

(2)于是将请求重定向到指定好 的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。

(3)用户输入认 证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证。

(4)系统自 动重定向到 Service (也就是要访问的目的资源地址)地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC)。

(5,6)CAS Client 在拿 到 Service 和新产生的 Ticket 过后,与 CAS Server 进行身份核实,以确 保 Service Ticket 的合法性。

在该协议中,所有与 CAS 的交互均采用 SSL 协议,确保,ST 和 TGC 的安全性。协议工作过程中会有 2 次重定向的过程,但是 CAS Client 与 CAS Server 之间进行 Ticket 验证的过程对于用户是透明的。

另外,CAS 协议中还提供了 Proxy (代理)模式,以适应更加高级、复杂的应用场景,具体介绍可以参考 CAS 官方网站上的相关文档。

 cas 

 

 

  • 用户在单点登录服务器的登录页面中,输入用户名和密码。
  • 然后单点登录服务器会对用户名和密码进行认证。 认证本身并不是单点登录服务器的功能,因此,通常会引入某种认证机制。认证机制可以有很多种,例如自己写一个认证程序,或者使用一些标准的认证方法,例如 LDAP或者数据库等等。在大多数情况下,会使用LDAP进行认证。这是因为LDAP在处理用户登录方面,有很多独特的优势,这在本文的后面还会比较详细 地进行介绍。
  • 认证通过之后,单点登录服务器会和应用程序进行一个比较复杂的交互,这通常是某种授权机制。CAS使用的是所谓的Ticket。具体这点后面还会介绍。
  • 授权完成后,CAS把页面重定向,回到Web应用。Web应用此时就完成了成功的登录(当然这也是单点登录的客户端,根据返回的Ticket信息进行判断成功的)。
  • 然后单点登录服务器会在客户端创建一个Cookie。注意,是在用户的客户端,而不是服务端创建一个Cookie。这个Cookie是一个加密的Cookie,其中保存了用户登录的信息。
  • 如 果用户此时希望进入其他Web应用程序,则安装在这些应用程序中的单点登录客户端,首先仍然会重定向到CAS服务器。不过此时CAS服务器不再要求用户输 入用户名和密码,而是首先自动寻找Cookie,根据Cookie中保存的信息,进行登录。登录之后,CAS重定向回到用户的应用程序。

这样,就不再需要用户继续输入用户名和密码,从而实现了单点登录。

注意,这种单点登录体系中,并没有通过http进行密码的传递(但是有用户名的传递),因此是十分安全的。

CAS 被设计为一个独立的Web应用,目前是通过若干个Java servlets来实现的。CAS必须运行在支持SSL的web服务器至上。应用程序可以通过三个URL路径来使用CAS,分别是登录URL(login URL),校验URL(validation URL)和登出URL(logout URL)。

      cas2 

  • 应用程序一开始,通常跳过原来的登陆界面,而直接转向CAS自带的登录界面。当然也可以在应用程序的主界面上增加一个登录之类的按钮,来完成跳转工作。
  • 如果用户喜欢的话,也可以手工直接进入CAS的登录界面,先进行登录,在启动其他的应用程序。不过这种模式主要用于测试环境。
  • CAS的登录界面处理所谓的“主体认证”。它要求用户输入用户名和密码,就像普通的登录界面一样。
  • 主体认证时,CAS获取用户名和密码,然后通过某种认证机制进行认证。通常认证机制是LDAP。
  • 为了进行以后的单点登录,CAS向浏览器送回一个所谓的“内存cookie”。这种cookie并不是真的保存在内存中,而只是浏览器一关闭,cookie就自动过期。这个cookie称为“ticket-granting cookie”,用来表明用户已经成功地登录。
  • 认证成功后,CAS服务器创建一个很长的、随机生成的字符串,称为“Ticket”。随后,CAS将这个ticket和成功登录的用户,以及服务联系在一起。这个ticket是一次性使用的一种凭证,它只对登录成功的用户及其服务使用一次。使用过以后立刻失效。
  • 主体认证完成后,CAS将用户的浏览器重定向,回到原来的应用。CAS客户端,在从应用转向CAS的时候,同时也会记录原始的URL,因此CAS知道谁在调用自己。CAS重定向的时候,将ticket作为一个参数传递回去。
  • 例 如原始应用的网址是http://www.itil.com/,在这个网址上,一开始有如下语句,转向CAS服务器的单点登录页面https: //secure.oa.com/cas/login?service=http://www.itil.com/auth.aspx。
  • CAS完成主体认证后,会使用下面URL进行重定向http://www.itil.com/authenticate.aspx?ticket= ST-2-7FahVdQ0rYdQxHFBIkKgfYCrcoSHRTsFZ2w-20。
  • 收到ticket之后,应用程序需要验证ticket。这是通过将ticket 传递给一个校验URL来实现的。校验URL也是CAS服务器提供的。
  • CAS通过校验路径获得了ticket之后,通过内部的数据库对其进行判断。如果判断是有效性,则返回一个NetID给应用程序。
  • 随后CAS将ticket作废,并且在客户端留下一个cookie。
  • 以后其他应用程序就使用这个cookie进行认证(当然通过CAS的客户端),而不再需要输入用户名和密码。

 

  • 大小: 19.5 KB
分享到:
评论
1 楼 0c0c0f 2014-11-22  
sso风险还是蛮多的...

相关推荐

    cas-server-4.0.0-release单点登录源码和war包-原版

    CAS(Central Authentication Service)是一种广泛使用的开放源代码的单点登录(Single Sign-On,简称SSO)系统。它允许用户通过一个认证界面访问多个应用系统,而无需在每个系统上分别进行登录。在这个"cas-server-...

    cas-client-core-3.3.3

    CAS(Central Authentication Service)是一种基于Web的单点登录(Single Sign-On, SSO)协议,主要用于简化用户在多个应用系统间的登录流程。`cas-client-core-3.3.3` 是一个CAS客户端的核心库,它使得应用程序能够...

    Spring Security 3 与 CAS单点登录配置-Server

    标题中的"Spring Security 3 与 CAS 单点登录配置-Server"涉及到的是在Java Web开发中使用Spring Security 3框架集成Central Authentication Service (CAS)实现单点登录(Single Sign-On, SSO)的服务器端配置。...

    cas单点登录需要的jar包

    在这个场景中,"cas单点登录需要的jar包"指的是为了在Java环境中集成和使用CAS服务,开发者需要导入特定的库文件,即jar包。 **1. CAS工作原理** CAS的基本工作流程如下:首先,用户尝试访问受保护的应用系统,系统...

    cas-overlay-template-5.3

    CAS(Central Authentication Service)是一种广泛使用的单点登录(Single Sign-On, SSO)框架,它为Web应用程序提供了统一的身份验证服务。"cas-overlay-template-5.3" 是一个基于Spring Boot构建的CAS服务器覆盖...

    CAS单点登录demo

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

    java-cas单点登录服务端

    CAS(Central Authentication Service)是一款不错的针对 Web 应用的单点登录框架,本文介绍了 CAS 的原理、协议、在 Tomcat 中的配置和使用,研究如何采用 CAS 实现轻量级单点登录解决方案。 CAS 是 Yale 大学发起的...

    cas单点登陆集成到简单maven项目的全部war包

    本教程将详细介绍如何将CAS单点登录集成到一个简单的Maven项目中,并提供两个测试DEMO来帮助理解这一过程。 首先,我们来看标题中的“全部war包”。在Java Web开发中,WAR(Web Application Archive)文件是一种...

    Cas5.2.6(cas-overlay-template-5.2.6)服务端

    集成完成后,可以通过CAS客户端(如浏览器插件或应用配置)进行测试,确保单点登录功能正常工作。同时,CAS提供了丰富的日志记录和调试选项,有助于定位问题。 总之,CAS 5.2.6服务端的集成和搭建涉及到了安全、...

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

    本课程主要通过CAS来实现SSO,本教程会从最基本的基础知识讲起,由浅入深再到实战,完成多应用的单点登录功能。 本课程内容如下: 1、 什么是SSO和CAS 2、 CAS Server服务端和客户端的搭建和配置 3、 单点登录和单...

    cas-server-webapp-4.0.0实现单点登录

    单点登录(Single Sign-On,简称SSO)是一种网络用户身份验证的机制,它允许用户在一次登录后,就可以在多个应用系统中自由切换而无需再次登录。在本案例中,我们将探讨如何使用`cas-server-webapp-4.0.0`来实现单点...

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

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

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

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

    .net cas单点登录

    这个项目可能包含配置文件、控制器代码、视图模板和其他相关资源,展示了如何在实际应用中实现CAS单点登录功能。 综上所述,.NET CAS单点登录涉及到了身份验证、票证机制、客户端和服务器之间的交互等多个核心概念...

    cas-server-4.0.0-release与依赖包.zip

    总的来说,CAS 4.0.0 是一个强大的身份验证解决方案,为多应用环境提供了安全、便捷的单点登录功能。其详细的源码和丰富的文档使得定制和扩展成为可能,适用于各种规模的组织和项目。正确理解和部署CAS服务器及其...

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

    2. 单点登录原理:SSO的核心思想是用户只需要进行一次身份验证,然后这个验证结果可以在所有信任的系统之间共享。当用户访问受保护的应用时,应用会重定向到认证中心进行验证,验证成功后,认证中心会返回一个票据给...

    cas单点登录

    总之,CAS单点登录系统提供了统一的身份验证入口,简化了用户登录过程,提高了用户体验。通过理解和实践CAS Server的配置以及客户端的集成,开发者可以有效地在自己的应用环境中实现单点登录功能。

    cas-server-4.0.0-release.rar

    CAS(Central Authentication Service)是一个开放源码的单点登录(Single Sign-On,SSO)解决方案,主要用于网络应用的统一身份验证。"cas-server-4.0.0-release.rar" 是一个包含CAS服务器4.0.0版本的源码和WAR包的...

    struts2+cas单点登陆例子

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

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

    SSO(Single Sign-On)是一种身份验证机制,允许用户在一个应用系统中登录后,无需再次登录即可访问其他相互信任的应用系统。它分为Web-SSO和桌面SSO,本讨论主要集中在Web-SSO上。在Web-SSO中,所有应用通过Web协议...

Global site tag (gtag.js) - Google Analytics