2

在我的组织中,我们有一个内部开发的 Web 应用程序,它依赖于Google 应用程序配置 API,允许我们的 1 级 IT 部门管理电子邮件帐户和电子邮件组。然而,由于 google 弃用了 API 以支持Admin 的 SDK Directory API,我们的 Web 应用程序的一些功能已经停止工作,所以是时候开始重新编写 Web 应用程序的后端了。

但是,我们面临的问题是新 API 使用 oAuth 2.0 身份验证,而作为旧 API,我可以硬编码管理员用户并获得授权令牌,整个想法是尽量减少用户和凭据的数量域的管理员权限。

所以问题是,有什么方法可以让这个“虚拟”用户一次授权应用程序,并且再也不会拥有与我们以前类似的架构?虽然我承认更好的问题是:在这种情况下,最好的做法是什么?

4

1 回答 1

1

最适合您的情况的身份验证流程是两条腿的 oauth。使用 oauth 2.0,您需要设置Service Account Credentials

要使用服务帐户凭据构建管理服务:

import httplib2
import sys

from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

def main(argv):
  # Load the key in PKCS 12 format that you downloaded from the Google API
  # Console when you created your Service account.
  f = file('key.p12', 'rb')
  key = f.read()
  f.close()

  # Create an httplib2.Http object to handle the HTTP requests and authorize it
  # with the Credentials. Note that the first parameter, service_account_name,
  # is the Email address created for the Service account. It must be the email
  # address associated with the key that was created.

  credentials = SignedJwtAssertionCredentials(
      'XXXXX@developer.gserviceaccount.com',
      key,
      scope='https://www.googleapis.com/auth/admin.directory.user')
  http = httplib2.Http()
  http = credentials.authorize(http)

  service = build('admin', 'directory_v1', http=http)

  # Then you can use the service
于 2014-10-24T10:18:10.863 回答