一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情。
CAS 是 web 的单点登录/登出的协议。通过 cas 协议,用户仅需一次登录就可以访问其他任何应用。CAS 协议是一种基于 ticket 的协议。
CAS 协议的基本认证过程:
主要的参与者:
- User:使用浏览器的用户
- Cas Client :web 应用的集成,然后通过 CAS 协议和 CAS Server 交互。可以理解为
- Cas Server :负责认证的服务
所以可以理解,一个用户要实现一次登录然后可以访问其他任何应用,那么在CAS Client 集成这些应用,然后这些应用由 CAS Client 发起与 CAS Server 进行认证流程,主要使用 CAS 协议进行交互,CAS Server 就是对发起认证要求进行验证。
CAS Client和CAS Server之间的交互是通过接口调用的方式来建立,要求每个组件都通过特定的 URI 访问
-
/login 接口 两种操作行为:凭证请求者 和 凭证接收者
-
请求参数:
-
service 客户端想要访问的应用标识,该值必须是应用 URL
- 若无 service 且session 不存在,cas Server 将向用户请求凭据以发起单点登录会话
- 若无 service 且session 已存在,cas server 通知 cas client 已登录
-
renew 将不进行单点登录,所有请求 过来,cas server 都会要求 client 提供凭证
- renew 参数不能与 gatway 参数同时使用
-
gateway 将不对 cas client 请求凭据
- 若存在 service 且存在 session ,则cas server 将客户端重定向到指定 URL,并附加 ticket 参数
- 若无 service ,那么 cas server 的行为就为定义
-
method 发送响应时使用的方法
-
-
-
/logout 接口 用于销毁客户端的 cas 单点登录会话。
- 请求参数 service :如果指定了service参数,则在CAS服务器执行注销后,浏览器可能会自动重定向到service指定的URL
-
/validate 接口 用于校验 service ticket 的有效性
-
请求参数
- 参数 service 发出 ticket 的服务的标识
- 参数 ticket 由 login 接口发出的 service ticket
- 参数 renew ,设置了该参数,那么在用户主凭证发出service ticket 才会验证通过,否则都会验证失败
-
-
/serviceValidate 检查 service ticket 的有效性并返回 xml 片段响应
-
请求参数
- 参数 ticket 由 login 接口发出的 service ticket
- 参数 pgtUrl 代理回调的 URL
- 参数 renew 设置了该参数,那么在用户主凭证发出service ticket 才会验证通过,否则都会验证失败
- 参数 format 如果设置了此参数,则必须[MUST]根据参数值生成票证验证响应,仅支持 xml 和 json ,未设置默认为 XML 格式
-
-
/proxyValidate 接口
- /proxyValidate 必须执行与 /serviceValidate 相同的验证任务,并且还有验证PT
- 参数和 /serviceValidate 相同
-
/proxy 接口 为已获取 PGT的服务提供 PT,并将代理对后端服务的身份验证
- 参数 pgt ST或PT验证期间服务获取的PGT。
- targetService 后端服务的服务标识符
CAS 3.0 协议重新提供了 ST验证接口 和 S/PT验证接口
- /p3/serviceValidate 和 /serviceValidate 相同的功能
- /p3/proxyValidate 和 /proxyValidate 相同的功能