cas协议是什么

2019-11-25  本文已影响0人  洋洋洒洒_6a20

cas协议是什么?

CAS协议是一种简单且功能强大的基于票证(ticket)的协议。它涉及一个或多个客户端和一台服务器。中央身份验证服务(CAS)是Web的单点登录/单点退出协议。用户向中央CAS Server应用程序提供一次凭据(例如用户ID和密码),就可以访问多个应用程序。客户端嵌入在CASified应用程序中(称为“ CAS服务”),而CAS服务器是独立组件:

关键概念:

官方地址

第一次访问app#a的单点登录流程图

sequenceDiagram
user->>browser:用户通过游览器访问应用
browser ->> app#a: 用户访问应用a 应用a监测到没有认证的用户重定向游览器到cas服务器
app#a ->> browser: 302 location:https://cas.example.com/cas/login?service=https%3A%2F..com%2F
browser ->> cas server: get https://cas.example.com/cas/login?service=https%3A%2F..com%2F
cas server ->> browser: cas判断是否有sso session 存在,没有session存在返回登录页面
browser ->> cas server: post https://cas.example.com/cas/login?service=https%3A%2F..com%2F 带上用户名密码
cas server ->> cas server: 认证用户
cas server ->> browser: 用户认证成功,生成sso session 并生成 TGT 存在游览器cookie里面 \n Set-Cookie: CASTGC=TGT-2345678 302 location https://app.example.com/?ticket=ST-12345678
browser ->> app#a: get https://app.example.com/?ticket=ST-12345678
app#a ->> cas server: 客户端带上ticket请求cas校验ticket get https://cas.example.com/serviceValidate?service=https%3A%2F..com%2F&ticket=ST-12345678
cas server ->> app#a: cas返回 [200] XML Content
app#a ->> browser: 设置cookie,重定向到前端业务地址 Set-Cookie: JESSIONID=12345678 302 location https://app.example.com/
browser ->> app#a: get https://app.example.com/: app#a 校验session是否合法
app#a ->> browser: session合法响应内容
browser ->> user : 渲染页面

第二次访问相同系统app流程

sequenceDiagram
user->>browser:用户通过游览器访问应用
browser ->> app#a: 游览器带上cookie访问应用a
app#a ->> browser: 校验session通过返回页面
browser ->> user: 渲染页面
browser ->> cas server: get https://cas.example.com/cas/login?service=https%3A%2F..com%2F

第一次访问第二个app app#b

sequenceDiagram
user->>browser:用户通过游览器访问应用
browser ->> app#b: get https://app2.example.com 
app#b ->> browser: 应用b检测到没有认证的用户重定向游览器到cas服务器 302 location:https://cas.example.com/cas/login?service=https%3A%2F..com%2F
browser ->> cas server: get https://cas.example.com/cas/login?service=https%3A%2F..com%2F
cas server ->> cas server:校验TGT 判断是否存在 sso session
cas server ->> browser: 用户认证成功 302 location https://app.example.com/?ticket=ST-12345678
browser ->> app#b: get https://app.example.com/?ticket=ST-12345678
app#b ->> cas server: 客户端带上ticket请求cas校验ticket get https://cas.example.com/serviceValidate?service=https%3A%2F..com%2F&ticket=ST-12345678
cas server ->> app#b: cas返回 [200] XML Content
app#b ->> browser: 设置cookie,重定向到前端业务地址 Set-Cookie: JESSIONID=12345678 302 location https://app.example.com/
browser ->> app#b: get https://app.example.com/: app#a 校验session是否合法
app#b ->> browser: session合法响应内容
browser ->> user : 渲染页面

官方时序图

正常单点登录流程 代理单点登录流程

代理单点登录流程 没看懂要用在那种场景 希望哪位大牛能指点指点

上一篇 下一篇

猜你喜欢

热点阅读