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

CAS 6.0.3版本无法获取ST问题求助(5.3.1版本正常)

解决CAS 6.0.3 REST API获取服务票据(ST)返回空值的问题

我之前在CAS 6.x版本里碰到过一模一样的问题——日志明明显示ST已经生成,但接口返回空,而5.x版本完全正常。结合调试和官方文档的变化,给你几个可行的解决方向:

1. 调整请求方式与参数传递规则

CAS 6.x对REST接口的HTTP规范要求更严格,获取ST的请求必须满足以下条件(这也是和5.3.1版本的核心差异):

  • 必须使用POST请求,不能用GET方式传递service参数(5.3.x允许宽松的GET请求,但6.x已完全遵循REST最佳实践)
  • service参数要放在POST表单体中,而非URL参数里
  • 请求头的Content-Type必须设置为application/x-www-form-urlencoded

具体操作步骤(以Postman为例):

  1. 选择POST请求,URL填写已获取到的TGT地址:
    https://localhost:8443/cas_server_war/v1/tickets/TGT-3-mXFuG9GXw9iMeXYa1pBACKww9JsgdsxUBDb0dV0zv0yhzUVyUVTFjnR6Q95k7Fh0534DESKTOP-97IVFIA
    
  2. 切换到Body标签,选择x-www-form-urlencoded格式
  3. 添加参数:service = https://www.baidu.com
  4. 确认请求头自动带上Content-Type: application/x-www-form-urlencoded(Postman会自动生成)
  5. 发送请求,即可正常获取到类似ST-3-W9WaFfn2xUlTesZYtNejSW8yKRoDESKTOP-97IVFIA的ST字符串

2. 验证请求头的Accept设置

如果上述操作后仍无响应内容,可以尝试在请求头里添加Accept: text/plain。CAS 6.x返回ST时默认使用纯文本格式,若请求未指定Accept头,可能因内容协商失败导致返回空值。

3. 确认CAS配置文件的开关

虽然你已添加REST依赖,但可以检查cas.properties是否显式开启相关功能(若无则添加):

cas.rest.enabled=true
cas.ticket.st.rest.api.enabled=true

这两个配置确保CAS加载REST接口的处理器和服务票据生成逻辑。

版本差异说明

CAS 6.x基于Spring Boot 2.x重构了Web层逻辑,对REST接口的规范遵循更严格;而5.3.x版本允许宽松的请求方式(比如GET传递参数),这也是为什么旧版本能正常工作的原因。

按照以上方法调整后,应该就能解决ST返回空的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:36:00