在Google App Engine中保护RESTful API

Leo*_*Leo 6 google-app-engine oauth webapp2

我正在试图弄清楚如何实现以下身份验证流程:

  1. 用户访问Web应用程序(最有可能使用Ruby on Rails编写)并进行身份验证(例如,用户名/密码).
  2. 客户端通过基于Google App Engine(Python,webapp2)构建的RESTful API提供的AJAX消耗数据.

在此输入图像描述

要求:

  1. 只有在Web应用程序(Rails)中进行身份验证的用户才能访问App Engine上托管的API.
  2. 用户可以在Web应用程序(Rails)中具有不同的角色,并且API(App Engine)需要知道与给定用户关联的哪些角色以限制对特定数据的访问.
  3. 客户端应该能够通过AJAX直接调用API(App Engine),而无需通过Web应用程序(Rails)路由所有请求.

我正在寻找有关如何实施此类工作流程的建议.我应该使用OAuth(或OAuth2)来访问API吗?OAuth提供商是否应该在App Engine上运行,而Web应用程序(Rails)是否代表用户向API请求令牌?如果是这样,只允许Web应用程序(Rails)请求OAuth令牌的最佳方法是什么?或者我应该考虑一个完全不同的策略?

任何建议都非常感谢.我也在寻找库的建议,以便在上面的上下文中实现OAuth.

Dre*_*ard 1

如果您正在考虑使用 OAuth 作为安全层来实现基于 Google App Engine 构建的 API,我建议您务必谨慎。我目前参与的一个项目正在努力解决这个问题。GAE 上的 OAuth 层仍然是新的,并且被 Google 认为是“实验性的”。目前谷歌的文档还很少。一切从这里开始。如果您尝试继续,我祝您一切顺利,如果您这样做,我将尽力提供帮助。