1

我正在尝试建立一个视频协作平台。我希望以这样一种方式设计它,即有一个 API,我的网络应用程序就像一个“第三方”应用程序。

我认为它的工作方式是三个主要组件..

  • 用 Ruby 编写的 JSON API
  • 用 Ruby/Rails 编写的 Web 应用程序
  • Coffeescript 中的前端应用

我希望能够对“项目”等资源提出经过身份验证的请求

截至目前,我想象前端应用程序与 Rails 应用程序对话以获取经过身份验证的请求,然后前端应用程序使用该经过身份验证的请求来调用 API。

我对这个架构有几个问题。

  1. 如果我打算稍后打开 API,我应该使用 OAuth 吗?
  2. 如果是这样,请求流会是什么样子?

我只是问这些问题,因为 OAuth 看起来是标准,我只能在验证第三方应用程序以访问另一个应用程序中的资源方面看到它。

我想我主要是在寻找一些指导,因为我可以构建应用程序,但我不是安全专家。谢谢大家的帮助。

4

1 回答 1

5

我可以告诉你我现在在我的项目中正在做什么:

  1. 导轨 API (JSON);您可以使用 rails api gem、grape 或完整的 rails 框架。
  2. 使用 AngularJs 的单页 web 应用程序(它可以是任何你觉得舒服的东西,比如骨干网、emberjs 等)

我如何验证用户:

  1. 用户使用用户名和密码发布到/login
  2. Rails 部分对用户进行身份验证(通过用户名和密码),创建访问令牌(将其保存在表中,具有过期时间,例如 30 分钟)并将其返回给用户。
  3. 来自客户端的每个请求(angularjs 部分)都使用 Token 身份验证标头传递,如下所示:Authorization: Token token=[the token goes here]
  4. rails api 用于令牌获取关联用户
  5. 如果令牌已过期或无效,则返回 401(未授权);一旦 angularjs 部分拦截了 401,它会将用户重定向到登录页面。
  6. 如果请求通过身份验证,过期时间将重置为“现在”,所以我所说的 30 分钟就像 30 分钟不活动

您可以使用访问令牌做更多事情 - 您可以扮演管理员、用户等角色,并限制用户对资源的访问。

于 2012-12-10T21:22:43.547 回答