使用CAS 标准时,首先是由 CAS Client 发起, CAS Client 会重定向到 CAS Server(由 IDaaS 充当)进行登录,由 CAS Server 进行账户校验且多个 CAS Client 之间可以共享登录的 session ,Server 和 Client 是一对多的关系;

原理和协议

从结构上看,CAS 包含两个部分: CAS Server CAS Client 。 CAS Server 需要独立部署,主要负责对用户的认证工作; CAS Client 负责处理对客户端受保护资源的访问请求,需要登录时,重定向到 CAS Server。

下图是标准 CAS 最基本的协议过程:

CAS Client 与受保护的客户端应用部署在一起,以 Filter 方式保护受保护的资源。对于访问受保护资源的每个 Web 请求, CAS Client 会分析该请求的 Http 请求中是否包含 Service Ticket。如果没有,则说明当前用户尚未登录,于是将请求重定向到指定好的 CAS Server 登录地址,并传递 Service (也就是要访问的目的资源地址),以便登录成功过后转回该地址。

用户在上图流程中的第 3 步输入认证信息,如果登录成功,CAS Server 随机产生一个相当长度、唯一、不可伪造的 Service Ticket,并缓存以待将来验证。之后系统自动重定向到 Service 所在地址,并为客户端浏览器设置一个 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新产生的 Ticket 过后,在第 5,6 步中与 CAS Server 进行身份核实,以确保 Service Ticket 的合法性。

在 IDaaS 中, CAS (标准)应用模板实现了标准的 CAS 流程。它充当一个 CAS Server的角色。当 CAS Cient 决定使用IDaaS作为 CAS Server 时。在登录认证时需要使用 IDaaS 系统中公司的主账号,密码进行认证。

IDaaS 中添加 CAS (标准)应用

说明 CAS 标准应用目前只能由 IT 管理员 在应用添加菜单中添加。下面是 IT 管理员的应用添加流程。如果希望使用 CAS(标准)单点登录,可以请管理员进行协助添加和配置。
  1. 以IT管理员身份登录 IDaaS ,点击添加应用。找到 CAS (标准),点击 添加应用
  2. 配置CAS 应用
    CAS Client 也就是业务系统需要提供两个参数:
    ServiceNames:CAS Client 发起认证的URL地址。如有您有多个 CAS Client,直接换行添加即可。
    说明 如果您的CAS Client 在内网,经过反向代理代理到外网。如果您的ServiceName参数值是自动获取的,有可能获取到的ServiceName值是内网的 IP 地址,需要您将ServiceName参数值写成固定的URL地址。

    TargetUrl:IDaaS发起单点登录地址。

  3. 点开应用详情,主要注意 CAS Login URLCAS Server URL Prefix 两个参数以便接下来在 CAS Client里面配置使用。

在 CAS Client 中使用 CAS(标准)应用作为 CAS Server

修改 CAS Client 的配置信息,一般是修改 web.xml 文件。

1、修改 casServerLoginUrl 参数值,修改为 IDaaS 中创建的 CAS 应用的 CAS Login URL 值。

说明 CAS logout url 参数值配置也类似。如果您有使用到,直接复制粘贴IDaaS中CAS应用的CAS Logout URL即可。

2、修改 casServerUrlPrefix 参数值,修改为 IDaaS 中创建的 CAS 应用的 CAS validation URL Prefix 值。

注意 CAS票据校验地址的URI地址为 public 开头的,与上面的其他地址不一样。
说明 CAS validation URL Prefix 为 CAS 票据验证地址的前缀。CAS Client 请求 CAS server 验证 ticket 的完成 URL 请求为 {{CAS validation URL Prefix}}/serviceValidate?ticket=''&service='ServiceNames'