我正在实现一个 Web 应用程序,客户端和服务器在不同的域上运行。
我已经在服务器端使用 Spring Security 实现了基于 google 的身份验证。
现在,当客户端调用登录 API 时,服务器会将其重定向到 google 页面进行身份验证。认证完成后,服务器需要发送access_token
给客户端。
由于客户端位于不同的域中,我无法使用 response.sendRedirect(baseUrl)
在 header 或 cookie 中传递 access_token
在这种情况下是否有其他方法来处理基于 token 的身份验证。
最佳答案
在浏览各种选项时,我发现了两种解决方案:
链接显示如何从一个页面到另一个页面设置 cookie http://subinsb.com/set-same-cookie-on-different-domains
在服务器端成功进行身份验证后,它会暂时重定向到本地屏幕,该屏幕内部将调用客户端,如上面链接中所述。
另一种方式是 -
要发出登录请求,客户端将弹出一个单独的窗口并随请求传递 secure_id。此外,客户端临时存储此 secure_id。 服务器完成身份验证后,重定向到客户端页面,通知客户端关闭弹出窗口。弹出窗口关闭后,客户端可以使用其存储的 secure_id 向服务器请求访问 token 。
关于java - 跨客户端身份服务器到客户端传递访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929312/