【问题标题】:Scope of user ID uniqueness in Google OAuth 2.0Google OAuth 2.0 中用户 ID 唯一性的范围
【发布时间】:2020-11-04 20:55:50
【问题描述】:

我们正在使用 Google OAuth 2.0 将用户登录添加到我们的移动应用程序(复数)。每个应用程序都有自己的客户端 ID,该客户端 ID 将在单独的 Google 云项目中定义,因为我们希望每个应用程序都有自己的登录同意屏幕,其中包含自定义磁贴、徽标等。但是,我们将所有应用程序的用户 ID 存储在一个单个数据库表。

考虑以下场景:2 个不同的用户 - Alice 和 Bob,其中 Alice 登录到 MyApp1,Bob 登录到 MyApp2(每个应用都在同一个 GCP 帐户下的不同 Google 项目中定义)。 Alice 和 Bob 是否有可能获得相同的用户 ID X?或者,Alice 是否有可能在登录 MyApp1 时获得分配的用户 ID X,并在登录 MyApp2 时获得用户 ID Y

假设 Google 完全遵守 OpenID Connect 标准。 OpenID 标准说:

子 必需的。主题标识符。本地唯一且从不重新分配的标识符 最终用户的颁发者,旨在供客户端使用...

“本地唯一且永不重新分配”是什么意思?

TIA

【问题讨论】:

  • 记住 Alice 和 bob 必须同时登录这两个应用程序。返回的令牌仅适用于为其创建的应用程序。如果您获得他们的个人资料信息,Google 会将他们的用户 ID 返回给您,您可以将其用作您的用户 ID,然后在应用之间建立链接。

标签: oauth-2.0 openid-connect google-oauth


【解决方案1】:

Alice 和 Bob 将从 Google Auth 获得不同的用户 ID,这些用户 ID 类似于 GUID,并且您的 API 将在主题声明中接收它们。即使用户更改了他们的姓名或电子邮件,此值也保持不变。

所有应用的子声明都相同,但在某些高级场景中可以使用pairwise identifiers,其中每个应用的子声明不同。不过这通常最好避免。

很多公司都做什么

在大多数现实世界的系统中,您需要在登录后在您自己的数据中查找用户,以访问用户的应用程序数据。您需要将子值映射到数据库行。有关如何处理此问题的一些想法,请参阅我在 User Data Management 上的帖子。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2016-12-26
    • 1970-01-01
    • 2017-05-28
    • 2020-11-21
    • 2013-10-24
    • 2014-09-16
    相关资源
    最近更新 更多