CAS #
简介 #
集中式认证服务(英语:Central Authentication Service
,缩写 CAS
)是一种针对万维网的单点登录协议。它的目的是允许一个用户访问多个应用程序,而只需提供一次凭证(如用户名和密码)。它还允许 web 应用程序在没有获得用户的安全凭据(如密码)的情况下对用户进行身份验证。“CAS” 也指实现了该协议的软件包。
CAS 是由耶鲁大学 的 Shawn Bayern 创始的,后来由耶鲁大学的 Drew Mazurek 维护。CAS1.0 实现了单点登录。 CAS2.0 引入了多级代理认证(Multi-tier proxy authentication)。CAS 其他几个版本已经有了新的功能。
2004 年 12 月,CAS 成为 Jasig(英语:Jasig)的一个项目,2008 年该组织负责 CAS 的维护和发展。CAS 原名 “耶鲁大学 CAS”,现在则被称为 “Jasig CAS”。
原理 #
Cas Server #
sequenceDiagram participant c as Client (The browser) participant ws as Web Server participant cs as CAS Server c->>ws: 访问网站地址 Note over ws: 尝试从 cookie 获取 pToken 和 sToken alt pToken 和 sToken 同时存在 ws-->>cs: /validate 验证合法性 alt 正常登录 cs-->>ws: 返回用户信息 ws->>c: 返回用户请求内容 else 不正常 cs-->>ws: 返回状态码 204 ws->>c: 返回重定向到 CAS 登录接口 Note over c, cs: 后面流程参考底下 Loop 循环 end else 不同时存在 ws->>c: 返回重定向到 CAS 登录接口 loop 访问 CAS 登录页面 c->>cs: 登录 alt 登录成功 cs->>c: 返回带 ticket 的重定向,并在浏览器写入 pToken 的 cookie c->>ws: 带有 ticket 的请求 ws-->>cs: 使用 ticket 置换 sToken alt 合法 ticket cs-->>ws: 返回 sToken ws->>c: 返回用户请求内容,并在浏览器写入 sToken 的 cookie else 非法 ticket ws->>c: 返回重定向到 CAS 登录接口 end else 登录失败 cs->>c: 返回错误提示页面 end end end
Session Server + Cas Server #
sequenceDiagram participant c as Client (The browser) participant ws as Web Server participant cs as CAS Server participant ss as Session Server c->>ws: 访问网站地址 Note over ws: 尝试从 cookie 获取 pToken 和 sToken alt pToken 和 sToken 同时存在 ws-->>ss: /validate 验证合法性 alt 正常登录 ss-->>ws: 返回用户信息 ws->>c: 返回用户请求内容 else 不正常 ss-->>ws: 返回状态码 204 ws->>c: 返回重定向到 CAS 登录接口 Note over c, ss: 后面流程参考底下 Loop 循环 end else 不同时存在 ws->>c: 返回重定向到 CAS 登录接口 loop 访问 CAS 登录页面 c->>cs: 登录 alt 登录成功 cs->>c: 返回带 ticket 的重定向,并在浏览器写入 pToken 的 cookie c->>ws: 带有 ticket 的请求 ws-->>cs: 使用 ticket 置换 sToken alt 合法 ticket cs-->>ws: 返回 sToken ws->>c: 返回用户请求内容,并在浏览器写入 sToken 的 cookie else 非法 ticket ws->>c: 返回重定向到 CAS 登录接口 end else 登录失败 ss->>c: 返回错误提示页面 end end end
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。