使用OAuth2进行身份验证+与google.appengine.api.users服务兼容

时间:2014-07-14 06:23:28

标签: python google-app-engine oauth-2.0 google-oauth google-apps-marketplace

我们正在尝试将我们的应用放在Google Marketplace上,其中一项要求是使用OAuth2进行身份验证。不幸的是(奇怪的是),AppEngine没有这方面的选择。

目前,我们正在使用OpenID进行身份验证。我一直在尝试在线查找资源,但未能找到关于如何正确执行此操作的明确指南。

我担心的是:

  1. 我应该使用什么范围?
  2. 如何管理会话? (Users服务处理得非常好)
  3. 本地开发过程会是什么样的?我是否需要连接互联网才能使用dev_appserver.py
  4. 我们在很大程度上依赖于Users服务提供的user_id属性。切换到OAuth2时,我可以依赖它具有相同的值吗?
  5. 其他AppEngine服务中的任何可能的冲突(依赖于用户服务的服务)?
  6. 迁移后,login: required中的app.yaml标记是否仍然按预期工作?
  7. 此外,如果我们可以继续使用用户服务,那就太棒了。

    编辑:稍微偏离主题,但我认为AppEngine docs for the Users service需要更新。它仍然表示支持OpenID是一种将您的应用程序与Google App Marketplace集成的强大方式",不再是这种情况。

1 个答案:

答案 0 :(得分:2)

您提出了很多问题,因此我只会解决我知道答案的问题(将我们自己的应用程序从OAuth1迁移到OAuth2之后)。

注意:我最想强调的是这个问题,而Aha Moment对我来说是: 在安装GAM应用程序后访问用户可以访问的API可能完全分离与最终用户对您应用的访问权限。 I.E.从您的应用程序的域管理员获得权限后(在安装它之后),您可以使用您的App Engine服务帐户从服务器端访问所有API。仅当用户访问您的应用时才使用用户API。因此,完全分离。话虽如此,这是我的见解。

  1. 您要使用的范围取决于您需要的服务。我无法找到从旧范围到新范围的明确映射 - 您必须使用https://developers.google.com/oauthplayground/测试内容 我还建议您设置一个测试应用,仅用于OAuth测试。

  2. 就我们的应用而言,会话照常管理,您拥有通常的User对象并按照您的预期使用它。与Google API的互动是通过App Engine服务帐户完成的。更简单的说法是,您使用用户API管理用户对用户的访问权限和权限,Google使用服务帐户和管理员电子邮件生成的令牌管理对API的访问权限。 (这个问题是它自己的帖子)

  3. 我不确定你的意思。

  4. 用户API应按预期工作。

  5. 我们还没有(令人惊讶!),但我想这取决于您的实施

  6. login: required应按预期工作,因为它的工作方式与用户api相同