【问题标题】:Cross-client Identity server to client passing access token跨客户端身份服务器到客户端传递访问令牌
【发布时间】:2017-08-13 05:58:19
【问题描述】:

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

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

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

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

在这种情况下有没有其他方法可以处理基于令牌的身份验证。

【问题讨论】:

  • 这是一个非常好的问题。我有一些链接可能有帮助,也可能没有帮助developers.google.com/identity/sign-in/web/backend-authdevelopers.google.com/identity/protocols/CrossClientAuth
  • 不确定 Google 的实施情况。是否有重定向 URI 的选项?如果是这样,访问令牌将作为参数在地址中返回。
  • @DaImTo 感谢您的输入,但此链接建议在我寻找相反方向时将令牌从客户端传递到服务器的方式。
  • @Eddie Google 身份验证提供重定向,但 cookie 是为服务器域设置的,因为我的请求是从服务器触发的。然而,我想将它重定向到不同域上的客户端
  • @PoorviNigotiya 我知道这是我最好的猜测。我能想到的唯一一件事是您必须让您的客户询问服务器服务器无法将其发送给客户端它没有关于您的客户端的信息。

标签: java spring authentication google-oauth access-token


【解决方案1】:

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

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

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

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

    一旦弹出窗口关闭,客户端可以使用它存储的secure_id从服务器请求访问令牌。

【讨论】:

    猜你喜欢
    • 2019-09-06
    • 2013-02-03
    • 2012-02-22
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2011-11-10
    • 2013-05-07
    • 1970-01-01
    相关资源
    最近更新 更多