Spring-Security+CAS详解:SSO单点登录实现与 CAS协议剖析

5星 · 超过95%的资源 需积分: 50 139 下载量 42 浏览量 更新于2024-09-09 1 收藏 363KB DOCX 举报
SSO(Single Sign-On)是一种在多个系统或应用间提供统一登录体验的技术,主要用于Web场景,通过一个单一的登录入口实现用户无需多次验证即可访问多个授权服务。Web-SSO的核心特征包括使用Web协议进行通信,如HTTPS,并且用户只需要在一个地方登录即可访问所有受保护的资源。 SSO体系通常涉及三个角色:用户(User)、Web应用(多个)和SSO认证中心(一个)。用户是实际的登录者,Web应用是需要用户授权访问的服务,而SSO认证中心则是整个流程的控制中心,负责用户身份的验证和管理。 CAS(Central Authentication Service,中央认证服务)是实现Web-SSO的一种流行方案,由Yale大学开发,它包含两个主要组件:CASServer和CASClient。CASServer是认证服务端,负责验证用户的凭证(如用户名和密码),独立部署并处理这些验证请求。而CASClient则部署在客户端Web应用中,作为过滤器保护受保护资源,当用户尝试访问这些资源时,会检查ServiceTicket的存在,若无则重定向至CASServer进行身份验证。 CAS的基础协议流程如下: 1. 用户访问受保护的Web应用时,CASClient会检查ServiceTicket,如果没有,将用户重定向到CASServer进行登录。 2. 用户在CASServer上输入凭证,验证通过后,CASServer会生成一个随机的ServiceTicket并返回一个TicketGrantingCookie(TGC)给用户浏览器。 3. 用户浏览器携带ServiceTicket重定向回CASClient,CASClient确认Ticket并获取用户身份。 4. CASServer验证Ticket并验证用户身份,通过后将用户标识发回CASClient。 当用户再次访问其他受保护的Helloservice2时,由于已经通过了CASServer的认证,客户端会自动携带TGC,CASServer会识别到并直接处理用户的身份验证,无需再次登录,从而实现了SSO的功能。这种机制使得用户在一次登录后能够无缝地访问多个受信任的Web应用,简化了管理流程,提高了效率。