找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2070

积分

0

好友

287

主题
发表于 2025-12-25 16:44:39 | 查看: 31| 回复: 0

单点登录(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 并重定向返回,重复第五、六步的验证与本地会话建立过程。用户由此实现了“一次登录,处处通行”。




上一篇:AI智能运维实战:基于Markdown技能定义与ReAct模式自动处理磁盘空间告警
下一篇:Anthropic开源Bloom框架实战:LLM自动化行为评估与测试指南
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 18:36 , Processed in 0.316128 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表