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

CAS 6.6.6/6.6.7嵌入式Tomcat下TGC域名配置登录异常求助

CAS 6.6.x嵌入式Tomcat下TGC域名配置与SSO兼容解决方案

针对CAS 6.6.6/6.6.7版本使用嵌入式Tomcat时的TGC域名配置矛盾问题,提供两种可行的嵌入式容器解决方案:

方案一:替换Tomcat的Cookie处理器为LegacyCookieProcessor

嵌入式Tomcat默认使用Rfc6265CookieProcessor,不允许域名带前缀点,但CAS文档推荐的带前缀点配置是为了兼容旧版浏览器的跨子域Cookie规则。通过自定义配置替换Cookie处理器,即可保留带前缀点的域名配置并实现SSO:

创建Spring配置类,修改Tomcat的Cookie处理器:

import org.apache.catalina.Context;
import org.apache.tomcat.util.http.LegacyCookieProcessor;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TomcatCookieConfig {

    @Bean
    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer() {
        return factory -> factory.addContextCustomizers(
            context -> context.setCookieProcessor(new LegacyCookieProcessor())
        );
    }
}

配置完成后,保持CAS的TGC域名设置为cas.tgc.domain=.my-boring-website.com,重启服务器即可正常实现跨子域SSO。

方案二:适配RFC 6265标准配置(无需修改Cookie处理器)

如果不想替换默认的Cookie处理器,可遵循RFC 6265标准调整CAS配置,同样能实现跨子域SSO:

  1. 将TGC域名改为无前缀点的格式:
cas.tgc.domain=my-boring-website.com
  1. 补充以下Cookie配置,确保跨子域共享的正确性:
cas.tgc.path=/
cas.tgc.secure=true
cas.tgc.http-only=true
cas.tgc.same-site=None

注意:此方案要求所有需要SSO的子域应用(如app.my-boring-website.com、www.my-boring-website.com)都属于my-boring-website.com的二级域名体系,且客户端的CAS配置需与服务器保持域名规则一致。

验证方法

  • 登录CAS后,在浏览器开发者工具的Cookie面板中,检查TGC的Domain属性是否符合配置预期
  • 访问子域应用,确认是否自动完成SSO跳转,无需重新登录

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:10:00