虽然启用了域范围委派,但尝试访问目录 api 时,服务帐户未获授权访问此资源/api

问题描述 投票:0回答:1

我正在尝试通过 Airflow 连接到 Google Directory API(REST 资源:用户)。我想要获取组织 Google 工作区中的用户列表并更新一些属性。 我想通过在项目中设置的具有适当范围的服务帐户以编程方式执行此操作:https://www.googleapis.com/auth/admin.directory.user.

域范围的委派以及 admin sdk api 也已启用。该服务帐户还拥有该项目的完全权限。

但是,当我尝试使用 google api 客户端和 google oauth2 运行基本的独立 python 脚本来测试服务帐户是否能够访问 api 并通过电子邮件获取单个用户时,它会抛出此错误:

Error fetching user: 
<HttpError 403 when requesting https://admin.googleapis.com/admin/directory/v1/users/<username>%40<domain>?alt=json 
returned "Not Authorized to access this resource/api". 
Details: 
  "[
    {
       'message': 'Not Authorized to access this resource/api', 
        'domain': 'global', 'reason': 'forbidden'
    }
   ]
">

但是,当我添加超级管理员的电子邮件作为模拟主题时,服务帐户能够访问目录 API 中的用户。

credentials = service_account.Credentials.from_service_account_file("/path/to/file.json", 
scopes=SCOPES, 
subject="[email protected]")

文档中没有提到还需要添加管理员电子邮件。我错过了什么吗?如果我需要添加要模拟的服务帐户的管理员,那么启用域范围委派有什么意义?

google-workspace google-admin-sdk google-directory-api
1个回答
0
投票

这看起来很有趣。 我现在关注的类似工作/任务是从特定组中提取 Google 组信息,而不是使用服务帐户和 Google 管理 SDK API 提取整个组织组信息。

是否可以仅从特定群体中提取信息?因为如果我获得整个组的访问权限,可能会导致一些问题。

thios 是否可以仅提取特定组信息?

© www.soinside.com 2019 - 2024. All rights reserved.