如何授权服务帐户访问 Google 管理员 API
How to authorise a service account to access the Google Admin API
我们正在尝试创建与 Google Admin SDK 的集成,以便能够在我们的域中检索、更新和创建帐户。但是,我们不断收到 403 错误,表明我们无权访问 resource/api.
我们正在使用从启用了 Domain-wide 授权授权和以下两个范围的服务帐户获得的凭据:
https://www.googleapis.com/auth/admin.directory.user.readonly, https://www.googleapis.com/auth/admin.directory.user. We are generating the JWT (which also includes these two scopes) and then sending a request to https://www.googleapis.com/oauth2/v4/token 检索访问令牌。
然后我们使用访问令牌向 https://www.googleapis.com/admin/directory/v1/users?domain=XXXX.com 发送请求。我们将访问令牌作为 Bearer 令牌包括在内,是 headers 的一部分。
在响应中,我们收到以下消息:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Not Authorized to access this resource/api"
}
],
"code": 403,
"message": "Not Authorized to access this resource/api"
}
}
是否可以澄清我们做错了什么?
为了使其正常工作,您必须设置 domain wide delegation 通过执行此操作,您的服务帐户将能够访问相关数据。
- 在 table 中找到新创建的服务帐户。在“操作”下,单击 more_vert,然后单击“编辑”。
- 在服务帐户详细信息中,点击 expand_more 显示全域委派,然后确保选中启用 G Suite 全域委派复选框。
- 如果您尚未配置应用程序的 OAuth 同意屏幕,则必须先配置,然后才能启用全域委派。按照屏幕上的说明配置 OAuth 同意屏幕,然后重复上述步骤并重新选中复选框。
- 单击“保存”更新服务帐户,return 到 table 个服务帐户。可以看到一个新的列,Domain-wide delegation。单击查看客户端 ID,获取并记录客户端 ID。
问题是 JWT 必须包含 sub
字段:应用程序请求委派访问的用户的电子邮件地址。
我们正在尝试创建与 Google Admin SDK 的集成,以便能够在我们的域中检索、更新和创建帐户。但是,我们不断收到 403 错误,表明我们无权访问 resource/api.
我们正在使用从启用了 Domain-wide 授权授权和以下两个范围的服务帐户获得的凭据: https://www.googleapis.com/auth/admin.directory.user.readonly, https://www.googleapis.com/auth/admin.directory.user. We are generating the JWT (which also includes these two scopes) and then sending a request to https://www.googleapis.com/oauth2/v4/token 检索访问令牌。
然后我们使用访问令牌向 https://www.googleapis.com/admin/directory/v1/users?domain=XXXX.com 发送请求。我们将访问令牌作为 Bearer 令牌包括在内,是 headers 的一部分。 在响应中,我们收到以下消息:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Not Authorized to access this resource/api"
}
],
"code": 403,
"message": "Not Authorized to access this resource/api"
}
}
是否可以澄清我们做错了什么?
为了使其正常工作,您必须设置 domain wide delegation 通过执行此操作,您的服务帐户将能够访问相关数据。
- 在 table 中找到新创建的服务帐户。在“操作”下,单击 more_vert,然后单击“编辑”。
- 在服务帐户详细信息中,点击 expand_more 显示全域委派,然后确保选中启用 G Suite 全域委派复选框。
- 如果您尚未配置应用程序的 OAuth 同意屏幕,则必须先配置,然后才能启用全域委派。按照屏幕上的说明配置 OAuth 同意屏幕,然后重复上述步骤并重新选中复选框。
- 单击“保存”更新服务帐户,return 到 table 个服务帐户。可以看到一个新的列,Domain-wide delegation。单击查看客户端 ID,获取并记录客户端 ID。
问题是 JWT 必须包含 sub
字段:应用程序请求委派访问的用户的电子邮件地址。