无法在Kubernetes Spring Boot应用程序中设置会话Cookie的最大期限

时间:2019-09-10 16:30:31

标签: spring-boot cookies kubernetes docker-compose jsessionid

我有一个Spring Boot(1.5.8)Web应用程序,还有其他几个Spring Boot服务,均已部署到AWS。将webapp模块部署到由Elastic Load Balancer管理的两个EC2实例。整个系统由Kubernetes编排。

我正在尝试设置会话Cookie的最长使用期限,以解决问题,如此处建议的:Spring-SAML Endless redirect loop after a successful authentication

当我使用Docker Compose在本地计算机上运行时,我所做的全部工作都在Web应用程序的server.session.cookie.max-age中设置了application.yml,并且可以正常工作。

同一件事在Kubernetes管理的系统中不起作用。该webapp设置了一个env执行器端点,我可以看到已应用max-age设置,但是cookie仍然具有“会话”到期时间。

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

1 个答案:

答案 0 :(得分:1)

好的,事实证明,由于在集成环境中将spring.session.store-type设置为redis,因此该会话正在由Spring管理。它是我本地构建中的none,这意味着Tomcat代替了它来管理会话。抱歉,我不是要对此进行混淆。我只是不知道要寻找什么。 Spring管理的会话的默认会话cookie名称为SESSION,而对于Tomcat,它的默认会话cookie名称为JSESSIONID,所以我至少是正确的,因为它是奥秘的关键。

似乎没有用于配置Spring会话cookie的属性,但是我在代码Spring Session - Custom Cookie

中找到了有关如何配置它的说明。