Spring安全登录表单jsessionid未发送accros域

时间:2018-01-11 09:18:05

标签: spring cookies spring-security spring-security-oauth2 pivotal-web-services

我有两个Spring启动应用程序,一个是客户端UI应用程序,另一个用作授权服务器(使用spring security oauth,隐式流和表单登录)。

当两个应用程序在localhost(不同端口)上运行时,我可以看到以下流程:

客户端向oauth / ahthorize发出请求以检索令牌。 由于客户端未经过身份验证,服务器会以302重定向响应其登录表单,同时设置两个cookie(XSRF,JSESSIONID)。

用户输入他的凭据,并在登录表单中执行POST。由于这两个应用程序在localhost中运行,因此两个Cookie将在POST请求中发送。

这样,服务器就会检索此JSESSIONID的SavedRequest,并按预期执行重定向到已保存的客户端URL。

问题是在不同域中运行这两个应用程序时(我试图在Pivotal Web服务环境中运行它)。

在登录表单的POST上不发送JSESSIONID cookie。

这是有道理的,因为cookie是为客户端域设置的,而登录表单位于不同的域中,无法访问cookie。

这导致服务器找不到SavedRequest对象来检索重定向URL 客户端,它重定向到服务器的根目录(/)

我错过了什么?

编辑:这是localhost登录页面上的POST(工作场景): enter image description here

这是域名不同(不工作)时的POST: enter image description here

编辑2:这是授权请求,它发送到客户端域(并通过Zuul代理到服务器: enter image description here

0 个答案:

没有答案