当前位置: 首页 > news >正文

统一认证中心CAS登录流程深度解析

结构设定:

假设当前的系统结构为:A系统是cas server(cas.com), 两个客户系统B(b.com)和C(c.com)。

  • 第一步,登录B系统:

当用户先访问B系统时,此时尚未登录,完整的处理流程如下:

核心阶段一:尝试访问,被拦截重定向

  1. 用户请求资源:用户在浏览器访问B系统的受保护页面https://b.com/profile

  2. B系统未登录检测:B系统检查用户的Session或Cookie,发现没有登录凭证。

  3. B系统告知CAS地址:B系统构造一个CAS登录地址,生成一个Service参数(即登录成功后想让CAS把用户送回哪里去)。这个地址通常是https://b.com/cas-callback

  4. 重定向至CAS:B系统通过302重定向,将用户浏览器引导至CAS服务器:

    • 请求示例:Location: https://cas.com/login?service=https://b.com/cas-callback

核心阶段二:统一认证 (在CAS Server)

  1. CAS检查全局登录状态:CAS检查浏览器带来的Cookie中,是否有自己的全局票据(通常叫TGC,Ticket Granting Cookie)。

  2. 进入登录页

    • 如果是首次访问,没有TGC,CAS返回登录页面,用户输入用户名和密码。

  3. CAS创建全局会话

    • CAS验证用户凭证(如查数据库、LDAP等)。

    • 验证成功后,CAS创建TGT(Ticket Granting Ticket,存于服务端),并生成TGC(存于客户端浏览器Cookie)。

    • 此时,全局单点登录会话已建立,用户之后再访问C系统时,就不会再看到登录页了。

核心阶段三:派发票据,返回B系统

  1. CAS生成服务票据:CAS生成一个一次性有效的服务票据(ST,Service Ticket)。这个ST与用户的身份,以及B系统提供的service参数(https://b.com/cas-callback)是绑定在一起的。

  2. 重定向回B系统:CAS将浏览器重定向回B系统最开始指定的那个地址,并附上ticket参数。

    • 请求示例:Location: https://b.com/cas-callback?ticket=ST-123456-abcde

核心阶段四:B系统后台校验,建立局部会话

  1. B系统接收票据:浏览器带着ST票据,访问B系统的回调接口https://b.com/cas-callback?ticket=ST-123456-abcde

  2. B系统后台校验(关键环节)

    • B系统在后台(用户不可见)发起一个HTTP请求给CAS服务器:https://cas.com/serviceValidate?service=https://b.com/cas-callback&ticket=ST-123456-abcde

    • 这是一个后台到后台的调用,通常也称为CAS ClientCAS Server的验证(validation)。

  3. CAS确认票据有效

    • CAS验证ST确实是它刚刚签发的、没有过期、并且service地址也匹配。

    • 验证通过后,CAS返回用户的登录名及相关属性给B系统的后台。

  4. B系统创建局部会话

    • B系统收到CAS返回的用户名(比如user123)。

    • B系统在自己的服务器端创建一个Session(局部会话),并在浏览器中写入B系统的Cookie(如JSESSIONID)。

    • 用户正式登录B系统

核心阶段五:完成访问

  1. 响应页面:B系统的回调接口处理完后,将页面重定向回用户最初想访问的地址https://b.com/profile(或者直接展示首页)。

  2. 展示内容:浏览器展示B系统内的页面给用户。

时序图:

  • 第二步,登录C系统:

由于前一步,用户已通过登录B系统完成了认证,登录C流程则大幅简化:

  1. 用户访问C系统,C系统发现未登录 -> 重定向到cas.com/login?service=c.com/callback

  2. CAS检查浏览器,发现它早就带着步骤7中写入的TGC,所以不再提示登录

  3. 立即生成ST,重定向回C系统的回调地址。

  4. C系统后台拿着ST去CAS换用户信息。

  5. C系统创建自己的Session,用户直接登录C系统。

http://www.jsqmd.com/news/732999/

相关文章:

  • 从CTF靶场到真实IoT:用Pikachu和CGfsb案例,手把手理解格式化字符串漏洞的实战利用
  • 使用 Taotoken 后 API 调用延迟与账单清晰度实际体验分享
  • 一文搞懂:Spring与Spring Boot的区别——为什么现在都用Spring Boot?
  • OPC到底该怎么启动?3种模式,看完你就懂了
  • Unity游戏上架Google Play必看:AAB+PAD资源加载性能实测与内存优化方案
  • 2026年艺术漆公司实力排行,艺术漆代理/艺术漆加盟/艺术漆代理加盟艺术涂料/艺术漆招商 - 品牌策略师
  • Node.js fs模块实战:从回调地狱到Promise/Stream,手把手教你处理大文件读写
  • 2026年5月阿里云Hermes Agent/OpenClaw搭建解析+百炼token Plan全流程攻略
  • Moonlight-PC深度解析:跨平台游戏串流技术的Java实现方案
  • ATC美国技术陶瓷原厂厂装一级代理分销经销
  • 在 Claude Code 中无缝接入 Taotoken 提供的模型服务
  • 5分钟搞定微信聊天记录解密:WechatDecrypt终极指南
  • Onekey终极教程:3分钟学会免费获取Steam游戏清单的完整方案
  • 《数字内容资产成熟度认证白皮书》深度解读(二):三维模型如何“打分”?——12项指标重塑内容价值评价标尺
  • 如何快速上手PvZ Toolkit:植物大战僵尸终极开源修改器完整指南
  • MiMo V2.5 邀请码 V4B9NJ
  • 手把手教你用Python+OpenCV模拟‘找色’自瞄原理(仅供学习反作弊)
  • 对比直接使用官方 API 通过 Taotoken 聚合接入的成本与便利性
  • 全球即时通讯工具
  • 当家方知柴米贵:资源感知优化如何让 AI 智能体告别“算力浪费”?
  • 从‘龙龙送外卖’到‘最小连通子图’:PTA L2-043题解与一种通用贪心思路
  • 别再让YOLOv7在人群里‘抓瞎’:用CrowdHuman数据集搞定头部、全身、可见身体检测(附完整训练权重)
  • 避开预警坑!2024年计算机/AI领域这些SCI期刊还能投(含CCF推荐、ELSEVIER/WILEY出版社清单)
  • 保姆级教程:用ENVI5.6和Sarscape处理高分三号雷达影像,从数据导入到地理编码全流程
  • 通过curl命令快速测试Taotoken的OpenAI兼容接口是否通畅
  • 2026年5月阿里云怎么搭建OpenClaw/Hermes Agent?百炼token Plan配置详解攻略
  • 微信读书笔记管理的终极解决方案:WeReader扩展完整指南
  • 自家山地被征收,补偿面积怎么算才不吃亏?一个公式帮你搞懂
  • 面试官最爱问的C++内存管理:从new/delete到智能指针,一个完整的内存泄漏排查实战
  • Spring AI 实战:从0到1搭建第一个AI应用