Spring Cloud Zuul + Undertow + OAuth2:无法登录到Zuul

时间:2018-09-06 22:14:27

标签: spring spring-boot spring-cloud spring-security-oauth2

我们正在使用Spring Boot v2.0.4 + Spring Cloud(Finchley版本)。

我们已经在各自独立的应用程序/进程中部署了Zuul,Auth Server,Eureka和Config Server。我们已经部署了六个自己的服务。我们正在对所有服务使用OAuth2身份验证。我们正在对所有应用程序使用嵌入式underwow容器。

当Zuul使用嵌入式Undertow容器时,我们无法登录-即使凭据正确,登录页面也会重新显示。当Zuul切换为使用嵌入式Tomcat容器时,一切正常运行-登录将用户带到正确的页面。 (两种情况下,所有其他应用程序都使用Undertow。)

当我们调试来自Zuul的Tomcat与Undertow的请求时,我们看到为Tomcat设置了SPRING_SECURITY_CONTEXT会话属性,但未为Undertow设置。我认为这意味着用户将被重定向回登录页面,这就是我们看到这种行为的原因。

我们知道Zuul + Tomcat vs. Undertow是一个问题,因为所有其他应用程序的配置都完全相同。

有什么想法吗?我们真的为这个问题scratch之以鼻。

1 个答案:

答案 0 :(得分:0)

原来,这是由Zuul和Auth Server之间的JSESSIONID cookie名称冲突引起的。因为对于同名的多个Set-Cookie,Tomcat容器的处理方式与Wildfly不同(这违反了RFC6265),所以我们现在才看到它。

我应该提到我们将身份验证服务器配置为在Zuul代理之后,因此配置了多个JSESSIONID cookie。

我们现在通过在所有后端服务器上重命名JSESSIONID cookie名称来解决此问题。我们将研究可能的最佳方法,以便将来进行生产部署,方法可能是使用Spring Session。欢迎任何建议。

相关问题