【问题标题】:Best practice: Should I have separate OAuth client credentials for each user or should I just one or few for per app basis?最佳实践:我应该为每个用户使用单独的 OAuth 客户端凭据,还是应该为每个应用程序提供一个或几个?
【发布时间】:2021-07-26 19:40:38
【问题描述】:

我正在为我的一个桌面应用程序使用来自 GCP(谷歌云平台)的应用程序。我需要通过 oAuth 凭据对用户进行身份验证才能在 GCP 上使用该应用程序。为此,我现在创建了一个凭证,它在测试环境中运行良好。但是,我的应用程序会有很多用户,现在我对如何以编程方式为每个用户创建凭据有疑问。所以在这样做之前的问题是

  • 基于每个应用创建单独的 oAuth 客户端凭据是最佳做法吗?在这种情况下,我可以在 GCP 控制台上管理凭据,因为它只有很少的凭据。

  • 或者最好的做法是创建单独的 oAuth 客户端凭据基于每个用户?在这种情况下,我需要以编程方式为每个用户创建凭据,例如通过 REST API。如何以编程方式执行此操作?

【问题讨论】:

  • 选项 2 甚至是不可能的,因为没有 API 来创建 OAuth 客户端。通常每个相关的应用程序组/域都有一个 OAuth 客户端。

标签: google-cloud-platform oauth-2.0 google-oauth


【解决方案1】:

您的架构有点不清楚(您所说的“使用 GCP 中的应用程序”究竟是什么意思?),但我知道您正在尝试对正在开发的桌面应用程序中的用户进行身份验证,以便与 Google API 进行交互作为经过身份验证的用户。

在这种情况下,您通常需要创建一个 OAuth 客户端 ID 来验证应用程序本身。然后,应用程序将要求最终用户使用他们自己的凭据进行身份验证,以便您的应用程序检索可用于调用相关 API 的访问令牌。

您可以在此处的文档中找到有关身份验证流程的更多详细信息:https://developers.google.com/identity/protocols/oauth2/native-app

【讨论】:

  • 您好 Thomas,来自 GCP 的应用程序,我的意思是 google-sheets 应用程序。这正是我想要确认的。现在我明白了,我的所有用户都应该只有一个客户端 ID。我现在正在寻找最佳实践来保持客户端 ID 的机密性,无论是硬编码到我的代码中还是将其作为单独的文件保存在我的应用程序中,以便我可以在将来出现任何安全问题时对其进行更新。
猜你喜欢
  • 1970-01-01
  • 2019-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2022-08-11
  • 2012-08-30
相关资源
最近更新 更多