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

时间:2019-09-30 18:26:07

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

我正在尝试验证使用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策略控制访问权限。

     

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

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

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

  4.   
     

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

我已经有3个服务帐户(我认为它们是由GCP或Firebase自动创建的),但是我在理解第二点是什么以及应该采取什么措施时遇到了麻烦。

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

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

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

1 个答案:

答案 0 :(得分: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 Console可以访问客户的Google Cloud Platform帐户,请向他们提供您的Google帐户电子邮件地址。他们可以为您的电子邮件地址分配所需的权限,以访问其项目的控制台。