当前位置: 首页 > 知识库问答 >
问题:

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

单于季
2023-03-14

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

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

我们希望在应用程序和组织域之间建立同步,用于应用程序和组织域之间的通用数据,并希望使用 OAuth2 连接,由域管理员代表其用户授予应用程序的“域范围权限”,以进行脱机同步。

从服务帐户页面:

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

G套件域管理员还可以

参考云平台控制台帮助常见问题:

您可以通过创建一个服务号来表示您的服务,然后让您的客户使用IAM策略授予该服务号对其云数据的适当访问权限,从而访问用户Google Cloud Platform项目中的数据。请注意,您可能希望为每个客户创建一个服务号…(着重号已添加)

听起来应用程序应该能够创建一个服务帐户,我们所有的客户端都针对其组织域对其进行身份验证。

不清楚的部分:
在服务帐户页面中,委派域范围权限的说明似乎与服务帐户的位置有关。在说明之前,它是这样的:

…首先为现有服务号启用域范围委托

之后,上面写着

您的应用程序现在有权以域中的用户身份进行API调用(“冒充”用户)。(强调添加)

从我阅读的内容来看,第一部分是“应用程序的一个服务帐户”,而后面的部分是“服务号只能以个人身份访问应用程序域,而不是组织域”。

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

我见过一些示例,让组织域管理员创建一个服务号,然后将clientID/机密传递给应用程序的所有者……但我不确定这是我们场景的正确方法。

相关-范围管理:委托步骤让组织域管理员手动添加范围。

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

在谷歌的文档海洋中,有没有我错过的页面?

共有1个答案

秦珂
2023-03-14

我想你是想念了解服务帐户的使用。

服务帐户是虚拟用户帐户。他们有自己的驾驶账户,日历账户,可能还有更多。服务帐户设计用于没有用户交互的后端应用程序服务器到服务器的通信。服务帐户是预先授权的。在您的情况下,您通过使用gsuite帐户的域范围专用性来授予服务帐户访问用户数据的权限。这样,服务帐户将能够例如发送控制所有用户的谷歌日历帐户。

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

如果您想访问客户拥有的私有用户数据,您应该使用Oauth2。

至于你问题的其余部分非常广泛,我不是真正的用户,从哪里开始,你可能想把它分成几个问题。一次一个。我不确定我明白你想做什么,所以我不认为我可以尝试回答那部分。

 类似资料:
  • 所以我认为这里有2个场景: 每个地区(西欧除外)创建一个大型存储帐户,每个应用程序创建一个容器。存储帐户转到每个区域的资源组 1的退税: > 容器被设计为具有扁平结构(您可以创建文件夹,但这并不明显) 2的退税: 很多存储帐户 考虑到这一点,我想说为每个应用程序创建存储帐户是一个更好的选择,但也许我遗漏了一些东西。 所以问题是:在这里有其他的事情要比另一个更好的选择吗?也许是成本? 我偶然发现了一

  • 我必须下载/上传/删除文件从一个文件夹驱动器与Node.js服务器。该文件夹位于公司的谷歌办公套件内,公司中只有少数人可以访问。 我必须使用一个服务帐户来做这件事,问题是:这可能吗?我该怎么做? 我已经读过了https://developers.google.com/drive/v2/web/delegation和https://developers.google.com/identity/pro

  • 问题内容: 我想允许我公司的客户将Google App Engine应用程序集成到他们的域中。例如,假设一位客户拥有域名,并希望通过访问我们的应用程序。 本文讨论了如何在内部设置多租户,但没有提及如何将客户端域与应用程序关联。 理想情况下,我希望允许客户以自助服务方式关联子域。当然,这带来了验证客户是否有权将子域添加到域名的问题。 什么是实现此目标的最佳方法? 问题答案: 客户将通过其Google

  • 我正在构建一个需要读取普通Gmail收件箱(不是域的一部分)的Web服务。 代码: 错误: 我看不出这有什么原因不起作用,但读完这篇文章后,你似乎不能在个人@gmail帐户上使用服务帐户凭据。有谁知道这是真的还是我做错了什么? 感谢您的帮助! 更新 如果我将更改为,我可以查看邮件,但无法修改标签,这是我的要求。

  • 我正在尝试使用ExpressJS和Coffeescript制作一个网络应用程序,它从亚马逊、LastFM和必应的网络应用程序接口中提取数据。 用户可以从特定乐队请求特定专辑的价格、即将到来的音乐会时间和乐队的位置等数据,等等...诸如此类的东西。 我的问题是:我应该使用和在客户端进行这些API调用,还是应该在服务器端进行?我已经完成了客户端请求;我如何从服务器端进行API调用 我只想知道最佳实践是

  • 一些DDD书籍如[1]指出,尽管我们有一个域模型,但我们可以有几个应用程序服务层(有些使用术语服务层)。这是由于应用程序层是应用程序的特定UI到域模型和基础结构层之间的接口,因此,如果我们有多个用户界面与后端一起工作,可能会有多个应用程序服务层。这一点向我提出了一个问题,即在哪里定位应用程序层。 我正在用。NET C#创建一个应用程序。整个应用程序位于一个解决方案中,其中UI(我们有三个不同的wi