Google 服务帐户:委派全域授权以仅模拟一个用户

Google service account: Delegate Domain-Wide Delegation of Authority to impersonate only ONE user

我们需要使用服务器应用程序访问 Google 日历 API 以创建活动并邀请与会者。 Google 建议为应用程序使用服务帐户。

这里的主要问题是与会者邀请参加活动,因为如果没有全域授权,服务帐户就无法做到这一点(见图)。

组织不想授予服务帐户访问所有用户数据的权限。所以,我想知道我们能否将全域授权委托给域的一个用户? (限制访问权限以使用其他用户的数据)。

P.S。这只是关于 Google 日历 API.

实际上,使用服务帐户代表用户访问 Google 日历 API 的意思是,您可以使用单个服务帐户一次模拟不同的用户一个时间。因此,如果您只想模拟一个用户,那么应该没有任何问题。在进行授权 API 调用

之前,您只需指定要模拟的用户电子邮件地址

在您 delegate domain-wide authority to the service account, You need to preparation to make an authorized API call 之后您需要指定要模拟的用户。

例如,如果您将检查 Google APIs Client Library for Java - Impersonation, GoogleCredential.Builder.setServiceAccountUser(String)。此方法只接受要模拟的用户的单个电子邮件地址。


选项 1:(使用服务帐户)

如果您想在您的应用程序中使用只能模拟特定 user/users 的服务帐户,您可以在 Google Apps Marketplace. Then you can restrict the access of this app for specific user/users or even by organization using admin console. Turn on or off a Google Workspace Marketplace app for users

中发布一个应用程序

选项 2:(不使用服务帐户)

您可以通过特定用户而不是服务帐户访问 Google API。您只需要启用 API 并生成 API 键。请参阅 Calendar API Quickstarts 了解如何设置和使用 api。