"CAS单点登录讲义"
SSO(Single Sign-On)是一种允许用户通过一次登录操作访问多个应用系统的身份验证技术。它分为Web-SSO和桌面SSO两种类型。桌面SSO主要体现在操作系统层面,而我们通常讨论的是Web SSO,它集中在客户端,利用Web协议(如HTTPS)来实现各个应用间的无缝切换,用户只需一次登录即可访问所有关联的Web应用。
在Web SSO的体系架构中,涉及三个关键角色:User(多个)、Web应用(多个)和SSO认证中心(一个)。User是系统使用者,Web应用是需要认证才能访问的服务,而SSO认证中心作为核心,统一处理所有登录验证,确保安全性和便捷性。为了实现SSO,必须遵循三个基本原则:所有登录操作都在SSO认证中心进行;认证中心通过特定方式(如Cookie或Token)告知Web应用用户是否已认证;最后,认证中心与每个Web应用建立互信关系,形成一个认证联盟。
CAS(Central Authentication Service)是Yale大学发起的一个开源Java项目,专门用于构建Web SSO环境。CAS的核心组件包括CASServer和CASClient:
1. CASServer:这是SSO认证的主要执行者,负责处理用户的认证信息,如用户名和密码,需要独立部署。当用户尝试访问受保护的资源时,CASServer会处理凭证并决定是否授权访问。
2. CASClient:集成在各个Web应用中,以过滤器的形式保护资源,检查用户的访问请求是否已经通过认证。若未认证,客户端会将用户重定向到CASServer进行身份验证。
CAS协议的基础流程如下:
- 用户尝试访问Web应用的受保护资源,CASClient检查请求中是否有ServiceTicket。
- 若无ServiceTicket,用户会被重定向到CASServer进行登录。
- 用户在CASServer上输入认证信息,验证成功后,服务器生成一个ServiceTicket,并通过Ticketgrantingcookie(TGC)返回给用户浏览器,同时重定向用户回原Web应用,附带ServiceTicket。
- CASClient接收到ServiceTicket后,会与CASServer通信验证ServiceTicket的有效性。
- 验证通过后,用户可以访问受保护资源,实现SSO。
当用户访问其他已集成CAS的Web服务时,由于TGC的存在,系统能识别出用户已认证,无需再次登录。这种机制使得用户在不同应用间切换时保持登录状态,大大提升了用户体验。
CAS通过其独特的架构和协议,实现了Web应用之间的单点登录,简化了用户认证流程,同时也保证了安全性,成为许多组织和企业构建SSO解决方案的首选。