`
holdbelief
  • 浏览: 706360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

剖析CAS Proxy的设计原理

    博客分类:
  • CAS
阅读更多

    由于CAS在开源社区的影响力,它逐渐被应用到各种复杂的SSO环境中。CAS的基本原理在广州UserGroup上有很多文章介绍,我不再做原理性的探讨,但CAS Proxy稍微复杂,值得对其作一个剖析,以便在日后的配置中减少配置上的失误。
    1,CAS Proxy的目的
    CAS Proxy的目的是,当浏览器用户Peter访问应用A,应用A引用了应用B1, B2的授权性资源(Authorized Resource),应用A想代表Peter去访问应用B1, B2,因此应用A需要告诉应用B1, B2当前用户是谁,以便B1,B2对Peter的Request进行授权。这就是CAS代理(Proxy)。

    这种情况很可能出Portal中,比如我在一个Web应用中要求同时从mail.163.com(应用B1),mail.126.com(应用B2)收取邮件并Load入到现在的应用A中去。这种场景中,应用A不可能分别Redirect用户Peter到163.com或者126.com去(因为用户是想要A展示B1,B2的内容,他并不是要访问163,126),只不过B1,B2需要认证才能访问,因此,A承担着这样一个角色,代表用户peter去load B1,B2的邮件。

    2,CAS Proxy的执行场景
    CAS Proxy协议很准确的描述了这种场景,简单起见,将场景分为两Part:

    PartA[获取PGT]:


    什么是PGT,PGT就是不需要S,T就能获取到NetID的票据,如果你对票据(Ticket),服务票据
等概念不理解,建议请阅读<Weblogic Security In Action>中篇的Kerberos协议部分。

    简单的说,票据(Ticket)就是一张门票,你来看周杰伦的演唱会,你需要门票,那门票叫做
Ticket,本文中的T,周杰伦演唱会就是S(Service)。
    你凭什么拿到T,当然不是因为你懂Java,而是因为你是周杰伦的VIP Fans,VIP Fans有VIP卡(即文中的C, Credential,中文翻译叫做凭证),他凭这个C可以拿到票(T),注意,是S Service(周杰伦演唱会)而不是Z Service(李宇春演唱会)或者Y Service (张靓颖演唱会)! 这个T比较巧妙,类似地铁票,CAS将它设计成一次性的票据,周杰伦拿着它给CAS Server一验证,便知道你是谁了(NetID),恩,原来是VIP Fans,欢迎欢迎........
    这本来就是CAS基本模式了,本模式还附属了一个PGTURL和PGT(PGTIOU仅仅用于关联作用,忽略),搞清楚PGT和PGTURL,是成功配置CAS Proxy的关键。
    PGT的概念(我不敢打比喻了)是,它被应用A用来代理浏览器用户Peter去访问其他更多的应用的凭据。没错,它是一个凭据,你知道,CAS/Kerberos的世界,做任何事情都需要凭据(Ticket)。所以,如果A要做这个代理访问动作,它依赖于PGT,PGT的用法见PartB,这里你知需要明白,PGT是给A用来向B1, B2两个应用证实用户Peter的身份,至于B1,B2怎么做,那还要看Peter的NetID是否具有取B1, B2邮件的权限。




    PartB[获取PGT]:

    PartB展示了PGT的作用,应用A(下图中的Web application)向CAS Server提交S和PGT,S乃自己的应用标识,PGT最终让A获得PT,PT跟ST的作用一模一样,它也是一次性的票据,A传PT给后端的B1(下图中的Back-end application),B1就可以根据这个PT获得A现在代理的用户Peter的NetID了,如下图所示。



 
    最后,我们比较一下PartA和PartB
    PartA,A因为ST获得Peter的NetID
    PartB,B1因为PT获得Peter的NetID

    谁告诉B1 Peter的NetID, A!Proxy的由来就是这样,A就是CAS Proxy!!

    有人问,干嘛这么麻烦,既然PartA中,A已经知道Perter的NetID,为何不直接告诉B1关于Peter的NetID?
    理由很简单,SSO依赖于域的一种信任关系,也就是,
    1)浏览器用户是不可信的,如果可信,那么认证要来干什么?
    2)CAS Server是可信的,如果CAS Server不可信,认证会有结果吗?
    3)Web应用可信吗?如果你认为可信,那么你就会问上面那个问题,呵呵。


    事实上,在CAS实际环境中,CAS仅仅依赖于信任证书的部署和双向SSL来实现信任关系的建立和核实。应用A和应用B是完全不同的两个应用,他们之间并没有建立信任关系,因此如果A告诉B1, B2关于Peter的NetID, B1,B2也不会相信,B1,B2只信任CAS Server(CAS环境唯一可以信赖的东西,这就是单点登录的前置条件——单点信任),最终,问题仍然需要A向通过CAS Server向B提交一个Peter身世(NetID)的说法。

    3, Proxy配置

    CAS Client端:
    配置Web应用的web.xml使用casclient.jar的两个servlet:

    < servlet > 
    
 < servlet-name > ProxyTicketReceptor </ servlet-name > 
    
 < servlet-class > edu.yale.its.tp.cas.proxy.ProxyTicketReceptor </ servlet-class > 
  
 </ servlet > 
 
  
 < servlet-mapping > 
    
 < servlet-name > ProxyTicketReceptor </ servlet-name > 
    
 < url-pattern > /CasProxyServlet </ url-pattern > 
  
 </ servlet-mapping >

    
    另外,在CAS Server端,确保CAS-Server的两个关于Proxy的Servlet能够正常被加载(默认配置即可)。

      <!-- Proxy (PGT acquisition) --> 
    
 < servlet > 
      
 < servlet-name > Proxy </ servlet-name > 
      
 < servlet-class > edu.yale.its.tp.cas.servlet.Proxy </ servlet-class > 
    
 </ servlet > 
 
    
 <!-- Modern proxy-service validation --> 
    
 < servlet > 
      
 < servlet-name > ProxyValidate </ servlet-name > 
      
 < servlet-class > edu.yale.its.tp.cas.servlet.ProxyValidate </ servlet-class > 
    
 </ servlet >

    最后一步,先Look一下如何单步调试CAS Proxy的过程,然后就可以自己编写一个简单的应用A和应用B1,B2来测试CAS Proxy了。

 

 

  • 大小: 10.3 KB
  • 大小: 9 KB
分享到:
评论

相关推荐

    cas-proxy认证

    ### CAS-Proxy 认证详解 #### 一、概述 CAS (Central Authentication Service) 是一...通过对 CAS-Proxy 认证的基本原理、配置方法以及实践案例的深入理解,可以帮助开发者更好地设计和实现基于 CAS 的单点登录系统。

    cas 配置client 1.0 &2.0 及proxy DEMO 说明

    cas 配置client 1.0 &2.0 及proxy DEMO 说明 1 cas server 搭建 1.1 资源准备 cas server 下载 http://www.ja-sig.org/downloads/cas/cas-server-3.3.1-release.zip 1.2 解压后打开cas-server-3.3.1-release\cas-...

    cas认证原理[参考].pdf

    CAS由Yale大学开发,起初为Java EE环境设计,现在已经发展成为支持多种平台和语言的SSO框架。CAS的架构主要包括两部分:CAS服务器和CAS客户端。CAS服务器是认证的核心,负责验证用户凭证并发放安全令牌。CAS客户端...

    proxy.jsp、proxy.ashx、proxy.php、proxy.config

    同时,理解代理服务的工作原理,如如何处理请求和响应,以及如何在客户端和服务器端进行交互,对于开发和维护GIS应用至关重要。 在资源包`resource-proxy-1.0`中,可能包含了这些代理服务的源代码、配置示例以及...

    ABAP 调用ABAP PROXY

    接下来,我们将深入探讨这个主题,包括ABAP Proxy的原理、创建过程以及调用方法。 ### ABAP Proxy简介 ABAP Proxy是SAP NetWeaver平台的一部分,它提供了一种灵活且可靠的通讯方式,特别是在分布式应用系统中。...

    Proxy原理说明的源码

    Proxy原理说明的源码

    cas-server-4.0.0-release部署包

    2. **CAS架构**:CAS Server主要由三个组件构成:CAS Server本身、CAS Client和CAS Proxy。CAS Server处理用户的身份验证,CAS Client负责与CAS Server交互并保护内部资源,而CAS Proxy则支持对受保护资源的代理访问...

    igmp proxy

    一、IGMP的基本概念与工作原理 1. IGMP协议版本:目前存在IGMPv1、IGMPv2和IGMPv3三个版本,其中v1和v2主要关注加入和离开组播组,v3增加了对源选择的支持。 2. 组播组:由多个接收者组成的逻辑集合,每个接收者都...

    goproxy-android snail007/goproxy全能代理服务器安卓版

    本文将详细介绍GoProxy-Android的核心概念、工作原理以及如何在Android Studio环境下进行开发和应用。 一、GoProxy-Android的核心概念 1. Go语言与GoProxy:GoProxy基于Go语言构建,Go语言以其高效的性能和强大的...

    igmp snooping proxy 详细设计文档

    ### igmp snooping proxy 详细设计文档 #### 背景与概述 随着网络技术的发展,多播(Multicast)作为一种高效的数据传输方式被广泛应用在视频会议、在线教育、流媒体服务等领域。然而,在传统的局域网(LAN)环境...

    OPC COM ProxyStub MergeModule (x86)_foundation_proxy_usvfs_proxy

    这里的"x86"表示这个模块是为32位操作系统设计的。在安装过程中,MergeModule会被合并到主安装包中,确保所有必要的依赖项都被正确安装。 4. **OPC Foundation**:OPC基金会是一个非营利组织,致力于推动OPC技术的...

    Java动态代理语法Proxy类原理详解

    "Java动态代理语法Proxy类原理详解" Java动态代理语法Proxy类原理详解是Java语言中的一种非常重要的语法机制,它可以动态地生成代理对象,从而对目标对象进行增强和修改。本文将详细介绍Java动态代理语法Proxy类...

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

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

    CAS 协议 票据、url介绍,包括cas1.0和cas2.0

    CAS 协议 票据、url 介绍,包括 cas1.0 和 cas2.0 CAS 协议是一个基于 HTTP 的协议,分为两部分:票据(Ticket)和 URL。CAS 协议的主要目的是提供单点登录(SSO)功能,实现用户的身份验证和授权。 票据(Ticket...

    cas java cas java 实例

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

    cas-server-3.5.1和cas-client-3.2.1

    在实际部署和使用过程中,你需要理解CAS的工作原理,配置服务器和客户端,确保它们能正确通信。同时,还需要考虑安全性问题,如SSL/TLS加密传输、防止重放攻击等。对于开发人员来说,学习如何集成CAS到新项目中,...

Global site tag (gtag.js) - Google Analytics