带模拟的全域委派

Domain-wide delegation with impersonation

我的场景涉及两个服务帐户,即 S1 和 S2。 S2 被授予对 Google 工作区的全域访问权限。

我想让 S1 模拟 S2(在 S1 上已经具有“服务帐户令牌创建者角色”)并使用其权限检索有关使用 S2 访问权限的 Google 工作区的一些信息。

是否可以授权给S1?

编辑: Johannes Passing 解决方案成功了,仍然感觉像是一种解决方法,在 google-api-dotnet-client 上打开了一个问题以添加这样的功能。

Yes, that's possible 如果 S2 的客户端 ID 已配置为全域委托:

  1. Create a JWT assertion 有:
    • iss 设置为 S2 的电子邮件地址
    • sub 设置为 Workspace 用户的电子邮件地址
    • scope 设置为您为 S2 的客户端 ID 和全域委派列入白名单的范围
  2. 作为 S1,在 S2 上调用 projects.serviceAccounts.signJwt 以使用 S2 的密钥签署断言。因此,您会得到一个签名的 JWT 断言。为此,S1 必须在 S2 上具有 Service Account Token Creator 角色。
  3. Post 对 https://oauth2.googleapis.com/token 的断言。因此,您将获得 Workspace 用户的访问令牌。