cas 协议规范

993 阅读3分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第12天,点击查看活动详情

CAS 是 web 的单点登录/登出的协议。通过 cas 协议,用户仅需一次登录就可以访问其他任何应用。CAS 协议是一种基于 ticket 的协议。

CAS 协议的基本认证过程:

img

主要的参与者:

  • 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 相同的功能