对于主要依赖于经过身份验证的请求的服务,我如何共同构建web应用程序和API



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

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

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

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

到目前为止,我设想前端应用程序与Rails应用程序对话以获得经过身份验证的请求,然后前端应用程序使用该经过身份验证请求来调用API。

我对这个体系结构有一些疑问。

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

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

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

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

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

我如何验证用户:

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

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

最新更新