概述
基本概念
SSO(Single Sign-On,单点登录)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。
主要技术术语:SSO(Single Sign On)单点登录。TGT(Ticket Granting Ticket),用户身份认证凭证票据。ST(Service Ticket)服务许可凭证票据。TGC(Ticket Granting Cookie)存放用户身份认证凭证票据的cookie。
SSO主要包含:认证中心、SSO服务器、SSO客户端。
- 认证中心系统,当用户首次访问一个由SSO统一管理的Web 应用服务器地址时,SSO Server会将此用户信息与认证系统中的内容进行核对。只有通过认证系统的校验,用户才能登录Web应用系统,并在不关闭所有浏览器的情况下直接访问SSO管理下的其他Web应用服务器。
- SSO服务器,主要负责完成用户认证、提供单点登录服务。SSO Server会处理用户名/密码等凭证,它可能会到数据库检索一条用户帐号信息,也可能在XML文件中检索用户密码,对这种方式,SSO均提供一种灵活但统一的接口/实现分离的方式,SSO认证方式的实现细节可以自己定制和扩展。目前eSight实现的SSO Server统一到安全管理服务中认证用户。
- SSO客户端,部署在应用系统(Web应用端与C/S架构模式应用端),用户请求访问应用系统的受保护资源时,需要将请求转向SSO服务器进行身份认证、单点登录服务相关处理。
WEB SSO
Web-SSO 体现在客户端,主要特点是:SSO 应用之间走 Web 协议 ( 如 HTTP/SSL) ,并且 SSO 都只有一个登录入口。另外一种 SSO 是桌面 SSO ,例如,只需要作为 Administrator 登录一次 windows 2000 ,便能够在使用 MSN/QQ 的时候免去登录的环节 ( 注意,这不是用客户端软件的密码记忆功能 ) ,是一种代理用户输入密码的功能。因此,桌面 SSO 是体现在 OS 级别上。
Web-SSO的实现机制:浏览器和服务器之间有约定,通过使用cookie技术来维护应用的状态。Cookie是可以被Web服务器设置的字符串,并且可以保存在浏览器中。当浏览器访问了页面1时,web服务器设置了一个cookie,并将这个cookie和页面1一起返回给浏览器,浏览器接到cookie之后,就会保存起来,在它访问页面2的时候会把这个cookie也带上,Web服务器接到请求时也能读出cookie的值,根据cookie值的内容就可以判断和恢复一些用户的信息状态。Web-SSO完全可以利用Cookie技术来完成用户登录信息的保存,将浏览器中的Cookie和上文中的Ticket结合起来,完成SSO的功能。
应用优势
- 方便用户
用户使用应用系统时,能够一次登录,多次使用。用户不再需要每次输入用户名称和用户密码,也不需要牢记多套用户名称和用户密码。单点登录平台能够改善用户使用应用系统的体验。
- 方便管理员
系统管理员只需要维护一套统一的用户帐号,方便、简单。相比之下,系统管理员以前需要管理很多套的用户帐号。每一个应用系统就有一套用户帐号,不仅给管理上带来不方便,而且,也容易出现管理漏洞。
- 简化应用系统开发
开发新的应用系统时,可以直接使用单点登录平台的用户认证服务,简化开发流程。单点登录平台通过提供统一的认证平台,实现单点登录。因此,应用系统并不需要开发用户认证程序
CAS(Central Authentication Service) SSO 方案介绍
CAS(Central Authentication Service) 是Yale大学发起的一个开源项目,应用广泛,具有独立于平台的,易于理解,支持代理功能。CAS系统在各个大学如耶鲁大学、加州大学、剑桥大学、香港科技大学等得到应用。据统计,每10个采用开源构建Web SSO的Java项目,就有8个使用CAS 。CAS是最简单实效,而且足够安全的SSO选择。
- CAS的设计目标
- 为多个Web应用提供单点登录基础设施,同时可以为非Web应用但拥有Web前端的功能服务提供单点登录的功能;
- 简化应用认证用户身份的流程;
- 将用户身份认证集中于单一的Web应用,让用户简化密码管理,从而提高安全性;而且,当应用需要修改身份验证的业务逻辑时,不需要到处修改代码。
- CAS的实现原理
CAS被设计成一个独立的Web应用。实现原理简单,它的实现是运行在HTTPS服务器的几个Java Servlet上,而客户端可以灵活采用http和https的方式。
当一个WEB浏览器登录到应用服务器时,应用服务器(Application)会检测用户的Session,如果没有Session,则应用服务器会把URL跳转到CAS Server上,要求用户登录,用户登录成功后,CAS Server会记请求的Application的URL和该用户的SessionId(在应用服务器跳转URL时,通过参数传给CAS Server)。此时在CAS服务器会种下TGC Cookie值到WEB浏览器。拥有该TGC Cookie的WEB浏览器可以无需登录进入所有建立SSO服务的应用服务器Application。
图2-2 CAS单点登录过程当一个WEB浏览器要求登退应用服务器,应用服务器(Application)会把URL跳转到CAS Server上的/cas/logout URL资源上,CAS Server接受请求后,会检测用户的TGC Cookie,把对应的Session清除,同时会找到所有通过该TGC SSO登录的应用服务器URL提交请求,所有的回调请求中,包含一个参数“logoutRequest”,所有收到请求的应用服务器Application会解析这个参数,取得SessionId,根据这个Id取得Session后,把Session删除,这样就实现单点登出的功能。
图2-3 CAS单点登出过程