【问题标题】:How to authorise a service account to access the Google Admin API如何授权服务帐户访问 Google Admin API
【发布时间】:2020-01-06 09:47:56
【问题描述】:

我们正在尝试创建与 Google Admin SDK 的集成,以便能够在我们的域中检索、更新和创建帐户。但是,我们不断收到 403 错误,表明我们无权访问资源/api。

我们正在使用从启用了域范围的授权委托和以下两个范围的服务帐户获得的凭据: https://www.googleapis.com/auth/admin.directory.user.readonlyhttps://www.googleapis.com/auth/admin.directory.user。我们正在生成 JWT(也包括这两个范围),然后向 https://www.googleapis.com/oauth2/v4/token 发送请求以检索访问令牌。

然后我们使用访问令牌向https://www.googleapis.com/admin/directory/v1/users?domain=XXXX.com 发送请求。我们将访问令牌作为不记名令牌包含在标头中。 在响应中,我们收到以下消息:

{
    "error": {
        "errors": [
            {
                "domain": "global",
                "reason": "forbidden",
                "message": "Not Authorized to access this resource/api"
            }
        ],
        "code": 403,
        "message": "Not Authorized to access this resource/api"
    }
}

是否可以澄清我们做错了什么?

【问题讨论】:

  • 您使用哪种语言?您如何调用 google oauth 服务器?
  • 我目前正在手动完成所有操作并使用邮递员发送请求。
  • 我很想看看你是如何通过邮递员授权服务帐户的,但我一直无法让它工作。
  • 我正在使用 Java 生成一个 JWT,然后我使用它向googleapis.com/oauth2/v4/token 发送一个调用,该调用检索一个 access_token。然后我复制 access_token 并发送一个检索用户的请求,作为响应,我收到了未经授权的消息。

标签: google-api google-admin-sdk service-accounts


【解决方案1】:

问题在于 JWT 必须包含 sub 字段:应用程序为其请求委托访问的用户的电子邮件地址。

【讨论】:

    【解决方案2】:

    为此,您必须设置domain wide delegation,然后您的服务帐户才能访问相关数据。

    1. 在表中找到新创建的服务帐户。在操作下,点击 more_vert,然后点击编辑。
    2. 在服务帐户详细信息中,单击 expand_more 显示域范围委派,然后确保选中启用 G Suite 域范围委派复选框。
    3. 如果您尚未配置应用的 OAuth 同意屏幕,则必须先配置,然后才能启用域范围的委派。按照屏幕上的说明配置 OAuth 同意屏幕,然后重复上述步骤并重新选中复选框。
    4. 单击保存以更新服务帐户,并返回服务帐户表。可以看到一个新列,域范围的委派。点击查看客户 ID,获取并记下客户 ID。

    【讨论】:

    • ** 编辑:OAuth 屏幕已配置,并且在服务帐户上也启用了域范围的委派。
    • 不正确,否则您不会收到该错误,它告诉您您无权访问
    • 所以问题出在实际服务帐户的设置上,而不是对 google API 的请求?
    • 正是服务帐户无权访问您尝试访问的资源。这是在域范围委派的设置中定义的。试试看。
    • @DalmTo 域范围的委派已按照您的描述设置,我们还在应用程序 OAuth 屏幕中的“Google API 范围”部分添加了范围。但是,正在返回相同的错误。我还向这个 URL 发送了一个 POST 调用:googleapis.com/oauth2/v1/tokeninfo?access_token=,它成功返回了访问令牌的信息。因此表明它正在工作。向 Admin SDK 发送请求时,只需要添加 access token 作为 header 的 Bearer token 部分,对吗?
    猜你喜欢
    • 2021-09-05
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多