You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用服务账号访问G Suite Admin SDK Directory API遇403权限错误

解决服务账号访问Google Directory API的403权限问题

我之前也碰到过一模一样的问题!你遇到的403 Not Authorized错误,核心原因是服务账号缺少模拟域管理员的配置——毕竟服务账号本身不属于你的Google Workspace域,必须指定一个域内的管理员账号作为操作主体,才能调用Directory API这类需要域权限的接口。

核心修复:给JWT Claim Set添加sub参数

在你的PowerShell代码中,构造JWT声明的时候,必须加入sub字段,值为你的Google Workspace域内拥有Admin SDK权限的管理员邮箱(建议用超级管理员邮箱)。这个参数告诉Google:“我要以这个域管理员的身份来执行操作”。

修改后的rawclaims代码如下:

$rawclaims = [Ordered]@{
 iss = "p12service@apiaccess-123456.iam.gserviceaccount.com"
 scope = "https://www.googleapis.com/auth/admin.directory.user"
 aud = "https://www.googleapis.com/oauth2/v4/token"
 iat = $createDate
 exp = $expiryDate
 sub = "admin@mydomain.com.au" # 替换为你的域管理员邮箱
} | ConvertTo-Json

额外检查点

除了添加sub参数,还要确认以下几个配置是否正确:

  • 授予域范围权限的账号必须是超级管理员:只有Google Workspace超级管理员才能在Admin Console中为服务账号配置「域范围授权」,普通管理员没有这个权限。
  • sub对应的账号要有足够权限:确保你指定的管理员账号拥有用户管理权限(比如分配「超级管理员」或「用户管理管理员」角色)。
  • 清理API请求URL:你的用户列表请求URL里多了无效的list&参数,修正后的URL应该是:
$usersapiendpoint = "https://www.googleapis.com/admin/directory/v1/users?customer=my_customer&domain=mydomain.com.au"
  • 验证域范围授权配置:登录Google Admin Console,进入「安全」→「API控制」→「域范围授权」,确认你的服务账号的客户端ID已添加,且授权范围包含https://www.googleapis.com/auth/admin.directory.user。

完成以上修改后,重新运行代码应该就能正常获取组织内的用户列表了。

内容的提问来源于stack exchange,提问作者Svyatoslav Pidgorny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:49:29