这可能与使用 showDeleted=true 的 Google Directory API 返回 403 for user_list 有关,但不幸的是,我无法发表评论,而且我没有提供答案。
我从学校的 G Suite获得了一个经过许可的服务帐号
https://www.googleapis.com/auth/admin.directory.user.readonly
Run Code Online (Sandbox Code Playgroud)
G Suite 管理员表示他已将域范围的权限委派给该帐户,并且我能够创建服务帐户 JWT 并检索访问令牌以使用 HTTP/REST 流调用 API。但是,当我调用用户获取端点以请求有关帐户的信息时 -
https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full
Run Code Online (Sandbox Code Playgroud)
我收到以下信息:
The remote server returned an error: (403) Forbidden.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Not Authorized to access this resource/api"
}
],
"code": 403,
"message": "Not Authorized to access this resource/api"
}
}
Run Code Online (Sandbox Code Playgroud)
我无权访问他们的 G Suite 管理面板,所以我无法浏览自己,但管理员已确认我们的客户可以访问他可以找到的任何地方的 admin.directory.user.readonly 权限,我们正在具有域范围访问权限的角色,如上所述。我愿意接受有关管理员可能缺少指定权限的地方的建议,或者我的方法中可能缺少的任何内容(尽管 JWT 构建/签名和访问令牌检索似乎按预期工作)。如果我可以提供任何其他有用的信息,请告诉我,我会更新。
更新:该帐户的权限似乎是正确的 - 我能够从用户/获取 API Explorer 中检索信息。但是,API Explorer 正在使用 URL
https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full&key={YOUR_API_KEY}
Run Code Online (Sandbox Code Playgroud)
并且我在服务帐户或用户/获取文档中找不到有关关键参数的任何文档。我在规范中定义的身份验证标头中包含 access_token 作为不记名令牌,当我尝试将其作为关键查询字符串参数发送时,我仍然收到上述相同的 403 错误。Stack 上有一个类似的问题(Google API Client users().get(userKey='name@domain.com') 返回 Not Authorized to access this resource/api)没有答案。
尚未使用 Admin SDK,但我建议检查执行 G Suite 域范围内的授权,因为它重点关注服务帐户的使用。
\n\n\n\n将域范围的权限委托给您的服务帐户
\n\n您创建的服务帐户需要被授予对您要访问的\n G Suite 域\xe2\x80\x99s 用户数据的访问权限。以下任务必须由 G Suite 域管理员执行\n:
\n\n\n
\n\n- 转到您的 G Suite 域\xe2\x80\x99s 管理控制台。
\n- 从控件列表中选择安全性。如果您没有看到列出的安全性,请从页面底部的灰色栏中选择“更多控件”,然后从控件列表中选择“安全性”。
\n- 从选项列表中选择高级设置。
\n- 在“身份验证”部分中选择“管理 API 客户端访问”。
\n- 在“客户端名称”字段中输入服务帐户的客户端 ID。
\n- 在“一个或多个 API 范围”字段中,输入应授予您的应用程序访问权限的范围列表(见下图)。例如,如果您需要在域范围内访问用户和组,请输入:\n
\nhttps://www.googleapis.com/auth/admin.directory.user,\n https://www.googleapis.com/auth/admin.directory.group- 单击授权按钮。
\n您的服务帐户现在可以在域范围内访问您域中所有用户的 Google Admin\n SDK Directory API。您已准备好代表 G Suite 域的用户实例化授权的 Admin SDK 目录服务对象。
\n
| 归档时间: |
|
| 查看次数: |
2415 次 |
| 最近记录: |