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

时间:2012-12-10 19:10:05

标签: ruby-on-rails json api authentication oauth

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

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

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

我希望能够对资源(例如“项目”

)进行经过身份验证的请求

截至目前,我认为前端应用程序正在与Rails应用程序通信以获取经过身份验证的请求,然后前端应用程序使用该经过身份验证的请求来调用API。

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

  1. 如果我打算稍后再打开API,那么我应该使用OAuth吗?
  2. 如果是这样,请求流会是什么样的?
  3. 我只是问这些问题,因为OAuth看起来是标准,我只能通过验证第三方应用来访问其他应用中的资源。

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

1 个答案:

答案 0 :(得分:5)

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

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

    1. 用户使用用户名和密码
    2. 发布到 / login
    3. Rails部分对用户进行身份验证(通过用户名和密码),创建一个访问令牌(在表中保留,具有到期时间,例如30分钟)并将其返回给用户。
    4. 来自客户端(angularjs部分)的每个请求都使用Token身份验证标头传递,如下所示:授权:令牌令牌= [令牌转到此处]
    5. rails api用于令牌以获取关联用户
    6. 如果令牌已过期或无效,则返回401(未经授权);一旦angularjs部分拦截401,它就会将用户重定向到登录页面。
    7. 如果请求已通过身份验证,则过期时间将重置为“now”,因此30分钟我正在谈论30分钟不活动的行为
    8. 您可以使用访问令牌执行更多操作 - 您可以执行管理员,用户等角色,并限制用户对资源的访问权限。