java - 跨客户端身份服务器到客户端传递访问 token

标签 java spring authentication google-oauth access-token

我正在实现一个 Web 应用程序,客户端和服务器在不同的域上运行。

我已经在服务器端使用 Spring Security 实现了基于 google 的身份验证。

现在,当客户端调用登录 API 时,服务器会将其重定向到 google 页面进行身份验证。认证完成后,服务器需要发送access_token给客户端。

由于客户端位于不同的域中,我无法使用 response.sendRedirect(baseUrl) 在 header 或 cookie 中传递 access_token

在这种情况下是否有其他方法来处理基于 token 的身份验证。

最佳答案

在浏览各种选项时,我发现了两种解决方案:

  1. 链接显示如何从一个页面到另一个页面设置 cookie http://subinsb.com/set-same-cookie-on-different-domains

    在服务器端成功进行身份验证后,它会暂时重定向到本地屏幕,该屏幕内部将调用客户端,如上面链接中所述。

  2. 另一种方式是 -
    要发出登录请求,客户端将弹出一个单独的窗口并随请求传递 secure_id。此外,客户端临时存储此 secure_id。 服务器完成身份验证后,重定向到客户端页面,通知客户端关闭弹出窗口。

    弹出窗口关闭后,客户端可以使用其存储的 secure_id 向服务器请求访问 token 。

关于java - 跨客户端身份服务器到客户端传递访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929312/

相关文章:

google-app-engine - App Engine 上的云存储和安全下载策略。 GCS acl 或 blobstore

spring - spring mvc中并发用户登录

java - gradle显示兼容性错误

java - 如何使用 Spring Boot 正确配置 Velocity?

java - 沙丁鱼 android webdav

java - 使用 Maven 的 SpringMVC 和 Hibernate

java - Maven BOM [Bill Of Materials] 依赖

email - Outlook 自动发现 SMTP 身份验证

java - 创建一个文件,读取它并丢弃

java - 如何用Java生成JUnit测试用例?