分享

单点登录CAS技术概述

 我心永恒lz 2015-02-04

1 简介

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

SSO的实现机制不尽相同,大体分为Cookie机制和Session机制两大类。

Session是一种服务器端机制,当客户端访问服务器时,服务器为客户端创建一个惟一的SessionID,以使在整个交互过程中始终保持状态,而交互的信息则可由应用自行指定,因此用Session方式实现SSO,不能在多个浏览器之间实现单点登录,但却可以跨域。

Cookie是一种客户端机制,它存储的内容主要包括、值、过期时间、路径和域,路径与域合在一起就构成了Cookie的作用范围,因此用Cookie方式可实现SSO,但域名必须相同。

目前大部分SSO产品采用的是Cookie机制,最好的开源单点登录产品CAS也是采用Cookie机制。

CASCentral Authentication Service)是 Yale大学发起的一个企业级的、开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法。CAS开始于2001年,并在200412月正式成为JA-SIG的一个项目。

2 CAS的特性

1) 开源的、多协议的SSO解决方案,CAS ServerCAS Client通信支持多协议,如:CASOauthOpenIDSAML1.1SAML2.0D等。

2) 支持多种认证机制Active DirectoryJAASJDBCLDAPX.509 Certificates

3) 安全策略:使用票据(Ticket)来实现支持的认证协议;

4) 支持多种客户端:Java.NetPHPPerlApache uPortal等。

5) 支持授权:可以决定哪些服务可以请求和验证服务票据(Service Ticket

6)  提供高可用性:通过把认证过的状态数据存储在TicketRegistry组件中,这些组件有很多支持分布式环境的实现

3 CAS原理

3.1 体系结构

CAS包含CAS ServerCAS Client两个部分。

CAS Server负责完成对用户的认证工作需要独立部署CAS Server 会处理用户名/ 密码等凭证(Credentials)

CAS Client负责处理对客户端受保护资源的访问请求,需要对请求方进行身份认证时,重定向到CAS Server进行认证。原则上,客户端应用不再接受任何的用户名密码等。CAS Client与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源

1 CAS框架图

3.2 CAS 协议

3.2.1 基础协议

CAS 基础协议执行步骤如下:

1) 访问服务:用户发送请求访问应用系统(可称为CAS客户端提供的受保护的服务资源。

2) 定向认证:CAS客户端分析HTTP请求中没有Service Ticket(即ST)或SessionID,说明用户还没有进行身份认证。于是,重定向用户请求到CAS服务器进行身份认证,并把用户此次访问CAS客户端的URL作为参数(service)传递给CAS服务器

3) 用户认证:CAS服务器接收到身份认证请求后转向登录页面,用户提供认证信息后进行身份认证身份认证成功后,CAS服务器以SSL方式给浏览器返回一个TGC(用户身份信息凭证,用于以后获取ST)。

4) 发放票据:CAS服务器会产生一个随机的ST,然后重定向到CAS客户端

5) 验证票据:CAS客户端收到ST后,向CAS服务器验证票据ST的合法性,验证通过后允许用户访问客户端服务。

6) 传输用户信息:CAS服务器验证票据ST通过后,传输用户认证结果信息给客户端。

2  CAS基础协议流程图

3.2.2 代理协议

CAS基础模式已经能够满足大部分简单的 SSO 应用现在,我们探讨一种更复杂的情况,即用户访问 helloservice helloservice又依赖于helloservice2 来获取一些信息,如同:

User -----> helloservice -----> helloservice2

这种情况下,假设 helloservice2 也是需要对 User 进行身份验证才能访问,那么,为了不影响用户体验(过多的重定向导致 User IE 窗口不停地闪动 CAS 引入了一种 Proxy 认证机制,即 CAS Client 可以代理用户去访问其它 Web 应用。

代理的前提是 CAS Client 拥有用户的身份信息 ( 类似TGC )  PGT 就是CAS Client 持有的对用户身份信息的一种凭据。凭借 TGC  User 可以获取访问其它服务的ST,所以,凭借 PGT CAS Client可以从CAS Server获取访问代理应用的PT,于是Web 应用可以代理用户去实现后端的认证,而无需前端用户的参与。

如图3所示, CAS Client 在基础协议之上,提供了一个额外的 PGT URL  CAS Server于是CAS Server 可以通过 PGT URL 提供一个PGT  CAS Client 

3  CAS Client获取PGT流程图

4  CAS Client访问应用流程图

4 CAS的安全性

CAS的安全性依赖于SSL,并且其安全性要求远高于普通的应用系统

4.1 TGC/PGT 安全性

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

PGT  TGC 的角色是一样的,如果被 Hacker 获得,后果可想而知。

从基础模式可以看出, TGC  CAS Server 通过 SSL 方式发送给终端用户,因此,要截取 TGC 难度非常大,从而确保 CAS 的安全性。另外,TGC也有自己的存活周期。下面是 CAS  web.xml 中,通过 grantingTimeout 来设置 CAS TGC 存活周期的参数,参数默认是 120 分钟,在合适的范围内设置最小值,太短,会影响 SSO 体验,太长,会增加安全性风险。

<context-param>

        <param-name>edu.yale.its.tp.cas.grantingTimeout</param-name>

        <param-value>7200</param-value>

 </context-param>

4.2 ST/PT 安全性

ST是通过 HTTP 传送的,所以ST可以被截取到 CAS 协议从几个方面让 ST变得更加安全

1) Service Ticket 只能使用一次。CAS 协议规定,无论 Service Ticket 验证是否成功, CAS Server 都会将服务端的缓存中清除该 Ticket ,从而可以确保一个 Service Ticket 被使用次。

2) ST 在一段时间内失效,默认5分钟

3) ST是随机产生的。

5 术语解释

CAS系统中设计了5票据:TGCSTPGTPGTIOUPT

Ticket-granting cookieTGC):存放用户身份认证凭证的cookie,在浏览器和CAS Server间通讯时使用,并且只能基于安全通道传输(HTTPS),是CAS Server用来明确用户身份的凭证

Service ticket ST:服务票据,服务的惟一标识码,CAS Server发出(HTTP传送),通过客户端浏览器到达业务服务器端;一个特定的服务只能有一个惟一的ST

Proxy-Granting ticketPGT):由CAS Server颁发给拥有ST凭证的服务,PGT绑定一个用户的特定服务,使其拥有向CAS Server申请,获得PT的能力

Proxy-Granting Ticket I Owe YouPGTIOU将通过凭证校验时的应答信息由CAS Server 返回给CAS Client,同时,与该PGTIOU对应的PGT将通过回调链接传给Web应用。Web应用负责维护PGTIOUPGT之间映射关系的内容表

Proxy TicketPT:是应用程序代理用户身份对目标程序进行访问的凭证

6 CAS Server与CAS Client的配置与部署

CAS ServerCAS Client的配置与部署详见:http://www.360doc.com/showweb/0/0/444451531.aspx


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多