【问题标题】:Three-legged OAuth2 scope verification issues for Angular & Firebase appAngular 和 Firebase 应用程序的三足 OAuth2 范围验证问题
【发布时间】:2019-09-30 18:26:07
【问题描述】:

我正在尝试验证一个使用 Google Cloud API 管理用户的 Firestore 集合的应用。 提交验证后,我收到了 API 开发团队的这封邮件:

尊敬的开发者,

感谢您提交针对以下 Cloud 范围的 OAuth 应用验证请求:

https://www.googleapis.com/auth/cloud-platform.read-only https://www.googleapis.com/auth/cloud-platform

三足 OAuth2 范围授权旨在让人类用户授予对托管在特定 API 上的所有数据的访问权限。访问您请求的 OAuth2 范围将为 Google Cloud Platform 客户提供过于广泛的访问权限。 Google Cloud Platform 仅支持为特定用户/服务授予特定资源,并使用 Cloud IAM 政策控制访问权限。

按照以下说明访问您请求的云范围:

  1. 创建一个服务帐户来代表您的服务并访问您用户的 Google Cloud Platform 项目中的数据

  2. 指示您的客户通过 IAM 策略授予您的服务帐户对其云数据的适当访问权限

请注意,您可能希望为每个客户创建一个服务帐户以避免混淆代理问题。

我已经有 3 个服务帐号(我认为它们是由 GCP 或 Firebase 自动创建的),但我无法理解第二点是什么以及我应该采取什么行动。

该应用使用我的 Firebase API 密钥从客户端发出请求,以代表用户对 Firestore 集合进行读写。这些是我正在使用的范围:

email
profile
openid
../auth/cloud-platform.read-only
../auth/cloud-platform

我希望应用验证过程能够成功完成,这样用户在登录时就不会看到“未验证的应用”屏幕。

【问题讨论】:

    标签: firebase google-cloud-platform google-cloud-firestore google-cloud-iam


    【解决方案1】:

    您正在尝试使用您项目的 OAuth 客户 ID 授予自己对客户帐户/数据的访问权限。这是非常危险的,因为您可能会收到身份令牌和刷新令牌,这会使客户难以撤销您的访问令牌。大多数客户/开发人员不知道如何做到这一点。

    Google 正在收紧您可以请求的访问权限级别。您要求的权限过于特权。正确的方法是让客户通过 Google Cloud IAM 授予您对其帐户的访问权限。这些权限可以授予您的 Google 帐户创建的服务帐户或您的 Google 帐户电子邮件地址。这两种方法都要求客户使用 IAM 在其 GCP 帐户中授予权限。

    您的问题可以分三步解决:

    1)删除以下范围,因为未经审核,Google 不会批准您的应用。

    • cloud-platform.read-only
    • 云平台

    注意:如果您只需要访问非常具体的服务,请更改该服务的范围。您可能不会获得批准。

    2) 在您的 Google Cloud Platform 帐户中创建一个服务帐户。向每位客户提供您的服务帐户的电子邮件地址。他们需要将电子邮件地址添加到 IAM 部分下的 Google Cloud Platform 控制台并分配所需的 IAM 权限。

    注意:您可能希望为每位客户创建一个服务帐户,以实现更好的安全性、隔离和日志记录。

    3) 使用服务帐户而不是客户端应用程序。

    注意:如果您需要 Google 控制台访问您客户的 Google Cloud Platform 帐户,请向他们提供您的 Google 帐户电子邮件地址。他们可以为您的电子邮件地址分配访问其项目控制台所需的权限。

    【讨论】:

    • 他们需要将电子邮件地址添加到 IAM 部分下的 Google Cloud Platform 控制台并分配所需的 IAM 权限。应用程序而不是他们做手动工作?
    • 您的应用将无权执行此操作。你有“鸡或蛋”你的应用程序需要权限来授予你权限。 Google 不会允许您的应用拥有这些权限(并非未经审核)。
    猜你喜欢
    • 2012-11-10
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    相关资源
    最近更新 更多