【问题标题】:Google auth - any way to have custom data sent back in redirect URL?Google auth - 有什么方法可以在重定向 URL 中发回自定义数据?
【发布时间】:2019-12-20 10:41:34
【问题描述】:

我正在通过 Google 在我的网站中实现单点登录,它运行良好,但是:我需要它来支持网站的各种实例。

这是一个问题,因为 Google 似乎不支持重定向 URL 中的任何动态。来自docs 关于重定向网址:

确定 API 服务器在用户访问后将用户重定向到哪里 完成授权流程。该值必须与以下之一完全匹配 OAuth 2.0 客户端的授权重定向 URI,您 在 API 控制台中配置。

至少可以说这很烦人;没有通配符,没有查询字符串变化 - 必须与您存储在控制台中的值完全匹配。

所以我的问题是:有没有人知道有什么方法可以告诉 Google 的身份验证服务将自定义数据附加返回到重定向 URL?

我在想类似的事情

$google->setRedirectUri('http://example.com/foo');

//pseudo code...
$google->setCustomRedirectData([
    'foo' => 'bar'
]);

...会生成

http://example.com/foo?code=...&other_google_params=...&foo=bar

有什么办法吗,还是我别无选择,只能手动指定每个重定向 URL?

【问题讨论】:

  • 我们为此使用state 参数。
  • 我们在发送用户进行身份验证之前给用户一个会话值,并在他们返回时检查它
  • @ceejayoz 谢谢,我会调查的。实际上我刚刚做到了,可以看到它确实是我需要的。如果您将其发布为答案,我会接受。
  • @tim - 我应该说网站的变化涉及不同的域,所以这不是一个选择,但谢谢。
  • 不是一个选项 - 域太多,而且每天都会添加。无论如何,谢谢。

标签: php google-api single-sign-on google-oauth


【解决方案1】:

我们为此使用state 参数。在我们的例子中,我们只需要存储少量数据(用户来自我们的通配符子域或自定义域),它非常有效。

它的格式由你决定。我们将一些(非敏感)JSON base64 编码到其中。

【讨论】:

  • 谢谢,正是我需要的。如果 Google 在您输入重定向 URL 的控制台中更多地标记这一点会很有帮助,否则我永远不会知道它存在。
  • @Utkanos 好吧,他们可能没有记录这种用法,因为虽然有用,但它技术上不是它的用途。 stackoverflow.com/questions/26132066/…
  • 有趣。但在这种情况下我不能孤单,回调需要传递一些持久状态。
  • @Utkanos 你绝对不是,我认为我们很多人为此滥用state。 Google 在执行重定向 URL 时特别挑剔;不确定这是出于良好的安全原因还是只是他们很痛苦。大多数其他大型 OAuth 系统都允许任意数量的任意 GET 参数而不会出现问题。
  • @ceeyaoz 是的 - 这也是我的经验。那好吧!谢谢。
猜你喜欢
  • 2021-02-08
  • 2021-12-22
  • 1970-01-01
  • 2019-05-06
  • 2016-10-14
  • 2018-02-03
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多