【问题标题】:Google Identity Refresh Token (Web)Google 身份刷新令牌(网络)
【发布时间】:2021-11-01 06:08:26
【问题描述】:

根据https://developers.google.com/identity/sign-in/web/server-side-flow,为了获得刷新令牌,客户端必须授予离线访问权限。但是,我认为使用new API 无法做到这一点。使用 Google 按钮获取刷新令牌的正确方法是什么,这样用户就不需要每隔一小时重新登录一次?

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: javascript google-signin google-identity


【解决方案1】:

新 API 中的登录身份验证已与数据访问授权分开。

在新的 API 身份验证中,不需要或使用访问或刷新令牌,而是在用户同意后共享包含用户配置文件的签名 JWT ID 令牌凭证。这大大简化了在应用注册或登录期间管理令牌的工作量和需求。

如果您正在执行授权以访问 Google API 并在后端存储刷新令牌,则适合使用 server-to-server OAuth 流程。

另外澄清一下,用户登录到您的应用和维护会话状态是独立的概念,应该与后端进程分开处理,后端进程可能会使用离线刷新令牌代表用户通过 Google API 执行操作未登录。

【讨论】:

  • 我不完全遵循。我们目前的流程: 1. 登录网页,获取token。 2. 发送token到服务器,服务器通过谷歌认证,登录我们的服务器。这适用于初始登录,当我们从服务器断开连接(由于超时等)时会出现问题。发生这种情况时,我们必须重新登录。使用 Apple 登录,我们可以发送刷新令牌并无缝处理。使用 Google 登录,似乎我们必须提示用户输入新令牌?不幸的是,这只适用于轻轻一按,用户永远无法关闭窗口,否则它会自动取消。
  • 如果用户登录了他们的 Google 帐户,或者您的平台是两个不同的东西。 JWT 告诉您用户已成功通过身份验证并登录到他们的 Google 帐户。他们可以登录/退出 G.A.独立于您的网站。您的站点具有有效的用户会话,无需显示 One Tap 并获取新的 JWT。鉴于您描述的流程,如果用户在您的网站上有有效的会话并且您很好,您似乎可以简单地选择不呈现 One Tap。换句话说,将刷新令牌处理替换为检查是否显示 One Tap。
  • @bdid 我不太明白。这是否意味着我需要在客户向我发送 Google JWT 后与客户协商我自己的会话 cookie(因为它将在 1 小时内用完并且在那之后不能用于身份验证)?因为如果是这样,我基本上必须推出并刷新我自己的 jwt,因为我使用的是无服务器应用程序
  • Google 的系统不会发出会话 cookie 供您使用,JWT 也不会用作建立和管理用户会话的手段。 JWT 只是传达用户个人资料信息的一种安全方式。
猜你喜欢
  • 2017-11-08
  • 2020-07-07
  • 2019-02-27
  • 2020-03-17
  • 2018-05-27
  • 1970-01-01
  • 1970-01-01
  • 2019-06-29
  • 1970-01-01
相关资源
最近更新 更多