场景1:Working fine
应用程序通过Azure应用网关接收所有请求。应用程序在第一个“/login”端点的响应中为会话cookie“JSESSIONID”设置某个值(由Spring安全性设置)。然后,在“/login?code= &state=“api的请求标头中使用相同的JSESSIONID cookie值<some_code><some_state>,这是来自授权服务器的回调URL。因此,在这种情况下,身份验证服务器能够基于相同的会话Cookie值识别客户端。我们可以推断Azure应用网关转发Cookie。应用网关中没有进行任何特定设置。
场景2:Issue
现在,应用程序通过Azure应用网关从Apigee接收请求。回调url也设置为apigee url。应用程序在第一个“/login”终结点的响应中为会话cookie“JSESSIONID”设置某个值。但是,当回调url“/login?code=<some_code>&state=<some_state>“在验证服务器验证成功后调用时,在请求头中没有“JSESSIONID”。2所以,可能是Apigee正在剥离这个cookie。
在这两种情况下,其他Cookie(如“SameSite”、“ADRUM_BTa”和“ADRUM_BT1”)在回调URL的请求标头中传递。
如果需要在Apigee中进行任何设置更改,以便在回调URL的请求标头中发送cookie,请有人在这里提供帮助。
1条答案
按热度按时间tv6aics11#
通过将应用程序中的会话cookie路径设置为等于Apigee配置的URI后端路径,解决了此问题。
服务器.servlet.会话.cookie.路径=/后端/路径/已配置/在/apigee/代理中
因为会话cookie总是基于路径设置的。默认情况下,如果没有上面的代码,会话cookie路径将被设置为应用程序的服务器上下文路径。