无法在 Kubernetes Spring 启动应用程序中设置会话 cookie 最长期限

Cannot set session cookie max age in Kubernetes Spring Boot app

我有一个 Spring Boot (1.5.8) webapp,以及其他几个 Spring Boot 服务,全部部署到 AWS。 webapp 模块部署到两个由弹性负载均衡器管理的 EC2 实例。整个系统由 Kubernetes 编排。

我正在尝试设置会话 cookie 最大期限来解决一个问题,如此处所建议:Spring-SAML Endless redirect loop after a successful authentication

当我 运行 在我的本地机器上使用 Docker Compose 时,我所做的只是在 webapp 的 application.yml 中设置 server.session.cookie.max-age 并且它起作用了。

同样的事情在 Kubernetes 管理的系统中不起作用。 webapp 设置了一个 env actuator 端点,我可以看到应用了 max-age 设置,但 cookie 仍然有 "session" 过期时间。

会话 cookie 在我的本地机器上名为 JSESSIONID,但在 Kubernetes 集群上名为 SESSION。这是为什么?会话 cookie 是否在该系统的某个更高级别进行管理,例如负载均衡器或 Kubernetes 本身?在这一点上我很迷茫,所以任何建议都会有所帮助。

好的,由于在集成环境中 spring.session.store-type 被设置为 redis,会话由 Spring 管理。它在我的本地构建中是 none,这意味着 Tomcat 改为管理会话。抱歉,我不是故意混淆这一点的。我只是不知道要寻找什么。 Spring 管理的会话的默认会话 cookie 名称是 SESSION,而对于 Tomcat,它是 JSESSIONID,所以我至少是对的谜。

似乎没有配置 Spring 会话 cookie 的属性,但我找到了关于如何在代码中配置它的解释:Spring Session - Custom Cookie