应该在哪里创建Google服务帐户?该应用程序的域?还是在每个客户的域中?

时间:2019-03-08 21:04:45

标签: google-oauth2 service-accounts

是否打算在应用程序的域中创建服务帐户?还是在客户的G Suite域中,代表应用程序?


背景:
我公司拥有一个产品(以下简称“应用程序”),该产品有数千个组织作为客户,每个组织都有自己的Google域。 (以下简称“组织域”)

我们希望在App与组织域之间建立同步,以获取App与组织域之间的通用数据,并希望使用OAuth2连接,并且由域管理员授予App'domain-代表用户进行广泛的授权,以进行离线同步。

Service Account page

  

...属于您的应用程序的帐户,而不是属于   个人最终用户。您的应用程序代表调用Google API   服务帐户,因此用户不会直接参与。

  

G Suite域管理员也可以授予服务帐户   域范围内的权限代表用户访问用户数据   域。

引用Cloud Platform Console Help Faq

  

您可以通过以下方式访问用户的Google Cloud Platform项目中的数据:   创建一个代表您的服务的服务帐户,然后   您的客户授予该服务帐户相应的访问权限   使用IAM策略的云数据。请注意,您可能要创建一个   每个客户的服务帐户...(已添加重点)

听起来,该App应该能够创建一个服务帐户,我们所有的客户都可以通过该服务帐户对其组织域进行身份验证。

不清楚的部分:
在“服务帐户”页面中,委派域范围权限的说明似乎在更改服务帐户的位置。 在说明之前,其内容为:

  

...首先为现有服务启用域范围的委派   服务帐户页面中的帐户 ...具有域范围内的委派   已启用。然后,G Suite域的管理员 必须完成   以下步骤:

然后,它读取

  

您的应用程序现在具有以用户身份进行API调用的权限   您的域(以“模拟”用户)。 (添加了重点)

从我正在阅读的内容中,第一部分读为“该应用程序的一个服务帐户”,而后半部分读为“该服务帐户只能以个人身份访问该应用程序域,而不是组织域。”

是否打算在App的域中创建服务帐户?还是在组织域中,代表The App?

我看过一些示例,这些示例中的Organization Domain管理员创建了一个服务帐户,然后将clientID /秘密传递给The App的所有者……但是我不确定这是否适合我们的方案。


相关-范围管理: 委派步骤使Organization Domain管理员手动添加范围。

我们希望使用OAuth同意屏幕,该屏幕显示范围并链接我们的页面/政策。 不幸的是,就我的研究发现而言,该页面似乎并没有用于“服务帐户”授权流程中;仅适用于对单个用户进行身份验证的其他应用程序类型,而不是整个组织域。

在Google的文档海中是否缺少我想要的页面?

1 个答案:

答案 0 :(得分:0)

我认为您很想了解服务帐户的使用。

服务帐户是虚拟用户帐户。他们有自己的驱动器帐户,日历帐户,可能还有更多。服务帐户设计为与没有用户交互的后端应用程序服务器到服务器通信一起使用。服务帐户已预先授权。您可以通过使用gsuite帐户的整个域专用权限来授予服务帐户访问用户数据的权限。这样,服务帐户将能够例如向所有用户的Google日历帐户发送控制权。

这就是为什么您不需要同意屏幕。服务帐户的另一点是,您必须控制数据才能进行设置。如果您不控制数据,则无法授予服务帐户对该数据的访问权限。

如果要访问客户拥有的私人用户数据,则应该使用Oauth2。

至于其余的问题很广泛,我不是真正的用户,您可能想将其分解为几个问题。一次带他们一个。我不确定我了解您要做什么,所以我不认为我可以回答这部分。