如何使用Oauth2冒充域名访问Google API Admin SDK?

时间:2014-01-16 19:00:00

标签: google-oauth google-admin-sdk google-apps-marketplace

我们使用OAuth 1.0协议在Google Apps Marketplace上部署了多个应用。根据Google平台中的OAuth 1.0到期,我们正在尝试将所有应用迁移到新的OAuth版本,但我们在向Google Admin SDK Directory API提交后台请求方面遇到了一些困难。

在我们的应用中,我们需要请求域用户帐户,群组和其他相关的电子邮件域结构。在OAuth 1.0之前,我们一直使用2-LO(双腿OAuth)进行此操作,所以基本上一旦Admin给了我们访问权限,我们就可以使用此机制模拟域请求。

在阅读了有关Google API,Oauth机制和内容的所有Google文档后,在尝试了一些代码测试假设之后,我们还没有想出如何通过以下方式管理OAuth 2的相同概念:

  1. 使用 Web服务器 Oauth 2策略根本不起作用,因为在这种情况下,我们将获得域用户访问Admin SDK。如果我们保留其访问/刷新令牌对以便稍后查询Admin SDK并删除用户,因为Domain更改了Admin,我们将从流程中断开连接。

  2. 我认为在这种情况下,最好的选择是服务帐户策略。此方案的问题是用户必须根据Google的文档域范围的委派权限https://developers.google.com/+/domains/authentication/delegation#create_the_service_account_and_its_credentials)在其管理控制台中手动配置对应用的访问权限。这对我们来说真的很尴尬,因为我们以交互方式管理所有应用程序安装,我们不想删除用户体验设施。

  3. 最后,我的问题是:

    1. 有没有办法在没有手动用户配置的情况下使用OAuth 2进行域名委派授权,交互式完整?
    2. 有没有办法在不需要用户电子邮件的情况下执行此操作,实际上这是服务帐户Oauth2策略中的参数之一?
    3. 我们是否必须为此方案保留2-LO身份验证,并且仅为安装Google Marketplace部分执行OAuth 2?
    4. 任何评论或指南都会很好。

      最佳,

1 个答案:

答案 0 :(得分:1)

  1. 当然 - 在Google Apps Marketplace的最新更新中,安装应用程序的行为意味着管理员无需再执行其他操作步骤。

  2. 您需要一种在服务帐户中模拟用户的方法。根据您实施应用程序的方式,您可能需要使用Directory API

  3. OAuth1最终会消失,因此我建议您始终使用OAuth2来简化代码复杂性。