Angular和Firebase应用的三足OAuth2范围验证问题

问题描述 投票:1回答:1

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

亲爱的开发者,

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

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

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

按照以下说明获得对您请求的Cloud作用域的访问:

  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个回答
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帐户电子邮件地址。他们可以为您的电子邮件地址分配所需的权限,以访问其项目的控制台。

© www.soinside.com 2019 - 2024. All rights reserved.