如何为主要依赖经过身份验证的请求的服务一起构建Web应用程序和API?

joh*_*ver 1 authentication api json ruby-on-rails oauth

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

我认为它的工作方式有三个主要组成部分..

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

我希望能够对"项目"等资源进行经过身份验证的请求

截至目前,我想前端应用程序与Rails应用程序通信以获得经过身份验证的请求,然后前端应用程序使用该经过身份验证的请求来调用API.

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

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

我只是问这些问题,因为OAuth看起来是标准的,我只能通过验证第三方应用来访问另一个应用中的资源.

我想我主要是寻找一些指导,因为我可以构建应用程序,我只是没有安全专家.谢谢大家的帮助.

Che*_*her 5

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

  1. Rails API(JSON); 你可以使用rails api gem,grape或full rails framework.
  2. 使用AngularJs的单页Web应用程序(它可以是您感觉舒服的任何其他内容,例如主干,emberjs等)

我如何验证用户:

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

您可以使用访问令牌执行更多操作 - 您可以执行管理员,用户等角色,并限制用户对资源的访问权限.