You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过CAS REST协议认证时是否可以生成TGT cookie(SSO会话)?

CAS REST 认证生成SSO会话(TGC Cookie)解决方案

结论

可以实现,CAS 6.0+版本原生支持该能力,只需调整服务端配置和调用逻辑即可。

核心背景说明

CAS默认的REST接口设计面向无状态服务端调用场景,因此默认关闭了SSO会话生成能力:你调用接口拿到的是服务端TGT标识,并非用户浏览器端需要的TGC(Ticket Granting Cookie)(也就是你提到的加密TGT cookie),所以用户无法实现跨应用免登。

具体实现步骤

  • 第一步:修改CAS服务端配置
    找到你CAS部署目录下的cas.properties配置文件,新增如下配置项:

    # 开启REST认证后生成SSO会话的能力
    cas.rest.authentication.sso-enabled=true
    # 配置TGC cookie的安全规则,适配你的业务场景
    cas.rest.cookie.secure=true # HTTPS环境设为true,HTTP测试环境设为false
    cas.rest.cookie.same-site-policy=lax
    

    该配置为CAS 6.0+原生支持,不需要引入额外插件或修改核心代码

  • 第二步:调整REST接口调用逻辑
    调用POST /cas/v1/tickets接口提交用户名密码认证时,请求参数中的service字段填CAS服务端的根访问地址,不要填单个业务应用的地址。如果是前端直接调用接口,需要开启fetch/axios的withCredentials配置,允许传递Cookie。

  • 第三步:把返回的TGC写入用户浏览器
    认证成功后,CAS会在响应头的Set-Cookie字段中返回加密后的TGC,你只需要将该Cookie原封不动写入用户浏览器的CAS所属域名下即可。后续用户访问所有接入CAS的业务应用,都会自动携带该Cookie实现免登。

常见注意事项

  • 不要把REST接口返回的TGT字符串(即响应体里的/v1/tickets/XXXX路径中的XXXX部分)和TGC混淆:前者是服务端会话的唯一标识,只能用于后续申请Service Ticket,后者才是实现SSO的浏览器端凭证。
  • 如果你的REST接口调用方和CAS服务端属于跨域场景,需要额外配置CAS的CORS规则,允许请求携带凭证,否则浏览器会拦截Set-Cookie响应导致TGC无法写入。

内容的提问来源于stack exchange,提问作者Jamie B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 06:45:02