单点登录(Single Sign-On,SSO)是一种身份验证方案,旨在让用户通过一次登录,即可访问多个相互信任的应用系统。其核心目标在于提升用户体验、降低重复认证成本,并实现对身份与权限的集中管理。
SSO 广泛应用于企业内部门户、云服务平台以及大型互联网平台(如阿里生态下的多个应用)等场景,是简化访问控制、确保安全合规的关键技术。
单点登录系统核心原理
单点登录的本质,是建立一个被所有子系统共同信任的独立认证中心(常称为 CAS Server 或 SSO Server)。该中心负责统一完成用户身份的校验,并发放一个可信的通行证(票据或令牌)。各个子系统无需自己处理登录逻辑,只需验证该通行证的有效性即可。
其整体架构通常包含三个核心角色:

1. CAS Server(认证中心)
作为中央认证机构,CAS Server 负责处理用户身份验证与会话管理。当用户首次尝试访问受保护资源时,会被引导至 CAS Server 提供的统一登录页面。服务器验证用户凭证(如用户名/密码、二次认证等)成功后,会生成一个唯一的票据(Ticket)或令牌(Token),并记录相应的会话状态,以便后续校验。
2. CAS Client(应用客户端)
CAS Client 集成在各个需要受保护的应用或服务中。它的主要职责是与 CAS Server 协同完成认证流程。当检测到用户请求未携带有效认证信息时,客户端会将用户的浏览器重定向至 CAS Server。待用户完成认证并携带票据返回后,客户端会向 CAS Server 验证该票据的真实性,验证通过后则在本地建立会话,允许用户访问。
3. 用户浏览器
浏览器在此过程中充当信使的角色,通过在应用(CAS Client)与认证中心(CAS Server)之间的多次HTTP重定向,传递认证请求、票据及会话标识(如Cookie),从而串联起整个单点登录流程。
单点登录标准流程解析
一个典型的基于票据(Ticket)的 SSO 交互流程如下图所示:

第一步:访问业务系统
用户尝试访问集成有 CAS Client 的业务系统A(例如一个内部管理系统)。
第二步:重定向至认证中心
业务系统A的 CAS Client 检测到用户无有效本地会话,于是将用户的浏览器重定向到 CAS Server。重定向的 URL 中会携带一个 service 参数,该参数即系统A的回调地址。
第三步:统一身份认证
CAS Server 接收请求,检查用户是否已有全局的登录会话(例如通过检测域名下的Cookie)。若没有,则向用户展示登录页面,要求其输入凭证并进行验证。此处的会话管理与安全策略是保障系统安全的关键。
第四步:颁发票据并返回
用户认证成功后,CAS Server 会生成一个一次性的、针对此次访问有效的 Service Ticket (ST)。随后,CAS Server 将浏览器重定向回第一步中 service 参数指定的回调地址,并将 ST 作为参数附加在URL中。
第五步:票据验证与本地登录
业务系统A的 CAS Client 从回调请求中获取到 ST,随后在后台向 CAS Server 发起一个服务端到服务端的请求,验证此 ST 的有效性。CAS Server 验证 ST 合法后,会返回该用户的唯一标识。
第六步:建立本地会话
CAS Client 确认用户身份后,在业务系统A内部创建本地会话(例如设置Session),并向浏览器颁发系统A自身的会话Cookie。至此,用户在系统A的登录完成。
第七步:访问其他系统(单点效果)
当该用户随后访问同样集成 CAS Client 的业务系统B时,系统B的 Client 同样会将用户重定向至 CAS Server。此时 CAS Server 发现用户已有全局登录会话(第二步中已建立),因此无需用户再次输入密码,便会直接为系统B生成一个新的 ST 并重定向返回,重复第五、六步的验证与本地会话建立过程。用户由此实现了“一次登录,处处通行”。
|