CAS(Central Authentication Service,中央认证服务)单点登录(SSO,Single Sign-On)的原理主要基于统一的认证机制和票据验证过程,使得用户只需在多个相互信任的应用系统中登录一次,即可访问所有这些系统。
CAS是一个开源的、企业级单点登录解决方案,它由耶鲁大学发起,旨在为Web应用系统提供一种可靠的单点登录方法。CAS在2004年12月正式成为JA-SIG(现在称为Apereo)的一个项目,并且一直在不断发展和完善。
CAS框架主要包括两个部分:CAS Server和CAS Client。
- CAS Server:这是一个需要独立部署的Web应用,主要负责完成对用户的认证工作。它会处理登录时的用户凭证(如用户名和密码)信息,这些信息可以从数据库、XML文件、LDAP服务器等多种来源检索。CAS Server在认证成功后,会生成一个唯一的、不可伪造的Service Ticket,并缓存以备将来验证。
- CAS Client:这部分负责与受保护的客户端应用部署在一起,以Filter方式保护受保护的资源。当有访问本地Web应用中受保护资源的请求,并且该请求需要身份认证时,CAS Client会检查Http请求中是否包含有效的Service Ticket。如果没有,它会将请求重定向到CAS Server进行认证。
CAS框架的优点包括:
- 提高用户效率:用户只需登录一次,即可访问所有相互信任的应用系统,无需记忆多个登录名和密码。
- 提高开发效率:开发人员在新建项目时,无需考虑开发用户体系,可以专注于业务逻辑的实现。
- 提高运维效率:运维人员无需维护管理多个用户账号表,简化了用户管理工作。
此外,CAS框架还提供了灵活的认证接口和可扩展性,支持多种客户端和认证方式。它已经成为许多企业业务整合的首选解决方案之一。
以下是CAS单点登录原理的详细解释:
一、CAS架构
CAS单点登录系统主要由CAS Server(认证服务器)和CAS Client(客户端应用)两部分组成:
- CAS Server:负责用户的认证工作,存储用户的认证信息,并生成和验证票据(Ticket)。
- CAS Client:需要接入CAS Server的应用系统,用户在访问这些系统时,若未认证,则会被重定向到CAS Server进行认证。
二、单点登录流程
- 用户首次访问CAS Client:
- 用户尝试访问某个CAS Client(如购物网站shopping.com)的受保护资源。
- CAS Client检查用户是否已认证(通常通过检查HTTP请求中是否携带了有效的票据或Cookie)。
- 如果用户未认证,CAS Client将用户重定向到CAS Server的登录页面。
- 用户登录CAS Server:
- 用户在CAS Server的登录页面输入用户名和密码。
- CAS Server验证用户名和密码的正确性。
- 如果验证成功,CAS Server会为用户生成一个全局的票据(如Ticket Granting Ticket, TGT),并在用户的浏览器中设置一个Ticket Granting Cookie(TGC)。
- 同时,CAS Server还会为用户生成一个针对当前CAS Client的访问票据(Service Ticket, ST),并将ST和TGC一起返回给用户浏览器。
- 用户访问CAS Client:
- 用户浏览器携带ST和TGC再次访问CAS Client。
- CAS Client将ST发送给CAS Server进行验证。
- CAS Server验证ST的有效性,并确认用户已认证且有权访问该CAS Client。
- 验证通过后,CAS Client为用户创建会话(Session),并允许用户访问受保护资源。
- 用户访问其他CAS Client:
- 当用户尝试访问另一个CAS Client(如支付网站pay.com)时,流程与首次访问类似。
- 但由于用户的浏览器中已存储了TGC,CAS Server可以通过TGC找到对应的TGT,从而无需用户再次输入用户名和密码即可为用户生成新的ST。
- 新生成的ST用于访问新的CAS Client,实现单点登录。
三、单点登录原理总结
CAS单点登录的原理主要基于以下几点:
- 统一的认证中心:CAS Server作为统一的认证中心,负责所有CAS Client的用户认证工作。
- 票据机制:通过TGT、TGC和ST等票据机制,实现用户认证状态的跨系统共享和验证。
- Cookie与Session结合:利用浏览器Cookie存储TGC,实现用户认证状态的持久化;在CAS Client端使用Session存储用户信息,实现用户会话管理。
- 重定向机制:通过重定向机制将用户引导至CAS Server进行认证,并将认证结果返回给CAS Client。
CAS单点登录的优点在于它实现了统一的认证管理,提高了用户体验和系统的安全性。同时,CAS Server可以集中管理用户的认证状态,提供了更好的管理性和可扩展性。