【问题标题】:Use OAuth2 for authentication + compatibility with google.appengine.api.users service使用 OAuth2 进行身份验证 + 与 google.appengine.api.users 服务兼容
【发布时间】:2014-09-04 00:25:05
【问题描述】:

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

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

我的担忧是:

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

另外,如果我们能继续使用用户服务,那就太好了。

编辑: 有点离题,但我认为 AppEngine docs for the Users service 需要更新。它仍然说“支持 OpenID 是一种将您的应用与 Google App Marketplace 集成的强大方式”,但现在已经不是这样了。

【问题讨论】:

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


    【解决方案1】:

    您有很多问题要问,所以我将只解决我知道答案的问题(在将我们自己的应用从 OAuth1 迁移到 OAuth2 之后)。

    注意: 关于这个问题,我最想强调的一点是: 在用户安装您的 GAM 应用程序后访问您从用户那里获得访问权的 API 可能与最终用户对您的应用程序的访问权完全分开。 IE。在您从域管理员获得应用程序的权限后(在他安装后),您可以使用您的 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 相同

    【讨论】:

    • 你的意思是建立一个完全独立的登录/注册页面,它使用 OAuth2 来遵守市场要求?然后应用程序的其余部分保持不变(仍在使用 OpenID)?
    • 市场上的 OAuth2.0 身份验证和权限授予是在安装时通过同意屏幕完成的。这使 您的应用 可以访问您请求的域范围。这与让用户进入您的应用程序无关。因此,当用户访问您的应用程序的 URL 时 - 您使用用户 API 决定他是否进入。您需要在应用中进行的更改在很大程度上取决于您的实施
    • 无论如何,如果您需要更全面的解释,我们可以跳到聊天中
    • MeLight,谢谢。是的,我认为这对我来说还不是很清楚。我不经常,我们如何“跳到聊天”?我们可以在这里链接到我们的聊天吗?所以答案可以更“完整”。
    • @john2x 有一段时间没来了。这是进入房间的链接:chat.stackoverflow.com/rooms/57617/oauth2-0-with-app-egnine,我会在接下来的几天里监控它:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-24
    • 2019-12-25
    • 2016-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多