`

SSO原理 (CAS)

sso 
阅读更多

CAS原理浅谈

本笔记参考自 SSO原理浅谈

简单的SSO体系结构:

  • User(多个)
  • Web应用(多个)
  • SSO认证中心(1个)

CAS的基本原理

CAS(Central Authentication Service)是Yale大学发起的一个开源项目 CAS是SSO的一种实现.

CAS的结构体系

  • CAS Server

    CAS Server负责完成对用户的认证工作, 需要独立部署

  • CAS Client

    CAS Client部署在客户端,原则上,CAS Client的部署意味着,当有对本地Web应用的受保护访问请求,并且需要对请求方进行身份认证,Web应用不再接受任何的用户名密码等 Credential, 而是重定向到CAS Server进行认证.

原始SSO实现

Web时代还处于初级阶段时,SSO是通过共享cookie来实现, 由于cookie无法跨域,所以如果几个Web应用想做到SSO,要求他们的域名在同一个域,这样各个站点才能共享基于这一域名的cookie,这种方法不灵活而且有不少安全隐患, 已经被抛弃了.

CAS基础协议

../../_images/cas_protocol-1.jpg
  • 上图是一个最基础的CAS协议,CAS Client以Filter方式保护Web应用的受保护资源,过滤从客户端过来的每一个Web请求,同时,CAS Client会分析HTTP请求中是否包请求Service Ticket(上图中的Ticket),如果没有,则说明该用户是没有经过认证的,于是,CAS Client会重定向用户请求到CAS Server(Step 2). Step 3 是用户认证过程,如果用户提供了正确的 Credentials, CAS Server会产生一个随机的Service Ticket, 然后, 缓存该Ticket,并且重定向用户到CAS Client(附带刚才产生的Service Ticket), Service Ticket是不可以伪造的,最后,Step 5 和 Step6 是 CAS Client 和 CAS Server 之间完成了一个对用户的身份核实,用 Ticket 查到 Username ,因为 Ticket 是 CAS Server 产生的,因此,所以 CAS Server 的判断是毋庸置疑的.

    该协议完成了一个很简单的任务,就是 User(david.turing) 打开 IE ,直接访问 helloservice 应用,它被立即重定向到 CAS Server 进行认证, User 可能感觉到浏览器在 helloservcie 和 casserver 之间重定向,但 User 是看不到, CAS Client 和 CAS Server 相互间的 Service Ticket 核实(Validation)过程. 当CAS Server 告知 CAS Client 用户 Service Ticket 对应确凿身份, CAS Client 才会对当前 Request 的用户进行服务.

Note

 

经过Step3之后, CAS Server将用户重定向到CAS Client, 可以将刚才产生的Service Ticket附加在URL中的,这样整个过程就可以不使用Cookie了. 当然了,这个地方使用cookie也是没有问题的,CAS不存在cookie跨域的问题,因为单点控制在CAS Server, CAS Server就只有一个.

CAS代理模式

CAS基础协议已经能够满足大多数的SSO应用,考虑一种更复杂的情况:用户访问hellservice, helloservice又依赖于 helloservice2来获取一些信息,这种情况下,假设helloservice也是需要对User进行身份验证的.

针对这种情况, CAS引入了一种Proxy认证机制, 即CAS Client可以代理用户去访问其他的Web应用.

../../_images/cas_protocol-2.jpg

CAS安全性

CAS的安全性依赖SSL.

TGC/PGT安全性

对于一个CAS用户来说,最重要的就是保护它的TGC(Ticket Granting Cookie), 如果TGC不慎被CAS Server以外的实体获得, Hacker能够找到该TGC, 然后冒充CAS用户访问**所有资源**.

合理设置TGC超时时间, 默认是2个小时 .. note:: 由于有SSL保护,所以TGC(或者ST service ticket, PT proxy ticket)面临的风险主要并非传输窃取, 而是当用户离开电脑后其他人可以直接访问你已经授权的应用,所以设置一个TGC的有效期,可以减少被别人盗用你系统目录下的TGC cookie的风险.

ST/PT安全性

CAS通过以下几个方面让Service Ticket更加安全.

  1. ST只能使用一次.

    CAS协议规定,无论Service Ticket验证是否成功, CAS Server都会将在服务端的缓存中的此ST清除.

  2. ST在一段时间内失效.

    CAS规定Service Ticket只能存活一定的时间,然后CAS Server会让它失效.

  3. ST是基于随机数生成的.

    Service Ticket必须足够随机化,尽可能做到其生成规则无法被猜出.

 
分享到:
评论

相关推荐

    CAS SSO 原理

    综上所述,CAS SSO原理是通过中心化的认证服务器和分散的客户端协同工作,实现了用户只需一次登录即可访问多个应用系统的功能。这种设计既方便了用户,又简化了系统管理员的身份管理,同时保持了一定的安全性。然而...

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

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

    sso shiro cas coderhuang

    通过研究这个项目,开发者可以深入理解SSO、CAS和Shiro的工作原理,掌握它们的整合方法。这将有助于在实际项目中快速搭建和维护SSO系统。 7. **安全考虑**: 虽然SSO带来了便利,但同时也增加了风险。如果认证...

    SSO之CAS单点登录详细图文教程

    通过学习本教程,你将能够理解CAS的工作原理,配置CAS服务器和客户端,实现单点登录,并能处理常见的安全问题。请参考提供的文档和代码示例逐步操作,确保每个步骤都正确无误。祝你在SSO之旅上顺利!

    SSO之CAS单点登录详细图文教程.zip

    SSO(Single Sign-On)是单点登录的缩写,是一种网络用户认证的机制,它允许用户在一次登录后,可以访问多个相互信任的应用系统,而无需...在阅读文档和实践操作的过程中,你将深入理解SSO的工作原理和CAS的实施细节。

    SSO之CAS单点登录

    CAS(Central Authentication Service)是SSO的一种开源实现,由耶鲁大学开发,广泛应用于教育、企业和政府机构。 **CAS单点登录的工作原理** CAS的核心概念是票据(Ticket)。当用户尝试访问受CAS保护的应用时,...

    sso/cas单点登录Java maven版 含服务端客服端

    CAS(Central Authentication Service)是SSO的一种实现,由耶鲁大学开发并开源,它提供了一个中心化的认证服务器和一系列协议来实现SSO。本项目是一个基于Java Maven构建的SSO解决方案,包括服务端和客户端两部分。...

    实现SSO的CAS开源框架介绍

    ### 实现SSO的CAS开源框架介绍 #### CAS (Central Authentication Service) 概述 CAS(Central Authentication Service),即中央认证服务,是由耶鲁大学的信息技术服务中心(ITS)开发的一套用于实现单点登录...

    CAS实现sso单点登录原理

    "CAS实现sso单点登录原理" CAS(Central Authentication Service)是Yale大学发起的一个企业级的、开源的项目,旨在为Web应用系统提供一种可靠的单点登录解决方法(属于Web SSO)。CAS开始于2001年,并在2004年12月...

    网上简单的SSO CAS 单点登录源码

    本源码集合为一个简单的Java实现的SSO CAS单点登录示例,适合初学者理解和实践SSO原理。 首先,我们需要理解SSO的基本流程: 1. 用户尝试访问受保护的应用A。 2. 应用A发现用户未登录,重定向到CAS服务器的登录页面...

    SSO之CAS单点登录实例演示

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

    cas-server-3.1.1-release.zip_CAS SSO_CAS-server_Cas Server RDBMS

    CAS在Tomcat中实现单点登录项目,单点登录(Single Sign On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO 使得在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。...

    SSO\CAS 单点登录配置手册

    #### 二、SSO实现原理 在实现SSO的过程中,通常会涉及到以下几个关键组件: 1. **认证服务器(Authentication Server)**:负责用户的认证过程,并颁发票据给客户端。 2. **服务提供者(Service Provider)**:需要接...

    sso cas server原始代码

    通过深入研究这些原始代码,开发者可以了解SSO CAS服务器的工作原理,学习如何自定义认证流程,优化性能,或者开发新的功能。同时,对于那些需要为自己的企业或组织搭建SSO系统的IT专业人员来说,这是一个宝贵的资源...

    CAS-SSO源码包(两个版本)

    CAS(Central Authentication Service)是基于Java的开源身份验证框架,主要用于实现单一登录(Single Sign-On, SSO)。...通过对源码的学习,你可以深入理解其内部工作原理,从而更好地利用和调整CAS以满足需求。

    CAS-SSO-TRIAL.zip_CAS_CAS SSO_java sso_sso

    1. **CAS简介**:解释CAS的基本原理,它的架构,以及为什么它是实现SSO的理想选择。 2. **SSO概念**:阐述SSO的工作机制,如何通过共享身份验证状态在多个应用间提供无缝登录体验。 3. **CAS服务器安装与配置**:...

    SSO CAS 整理 - 页面备份

    这些教程详细介绍了从零开始搭建CAS 5.x的过程,涵盖了从基础环境准备到高级功能配置的各个步骤,对于理解SSO原理和实践操作具有很高的参考价值。通过学习和实践,开发者能够熟练掌握CAS的使用,从而为组织提供安全...

    SSO学习有CAS SSO配置.doc

    CAS的工作原理是,当用户尝试访问受保护的应用程序时,会被重定向到CAS服务器进行身份验证。如果用户通过了验证(通常基于用户名和密码),CAS服务器会生成一个称为ticket的令牌,并将其发送回客户端。然后,客户端...

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

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

    cas sso server page

    在这个“cas sso server page”主题下,我们将深入探讨CAS服务器的配置、工作原理以及如何设置和管理SSO。 1. CAS服务器简介: CAS服务器作为SSO的核心,负责处理用户的认证请求,并向各个应用系统提供验证票证...

Global site tag (gtag.js) - Google Analytics