应该在哪些场景中使用哪些REST api身份验证方法?

时间:2013-08-26 18:36:49

标签: ruby-on-rails rest authentication angularjs csrf

我一直在研究如何在调用REST服务时处理身份验证和CSRF保护(例如Angular与Rails公开的REST api交谈)。我一直在阅读诸如this discussion of protecting against CSRF over REST apis in Railsthis related so postthis suggested solution之类的内容,以及关于防止CSRF以及各种REST apis如何进行身份验证的Angular文档。毕竟,以下是我看到的一般情况:

  1. 您希望在具有现有基于cookie的身份验证/会话方案的现有站点的上下文中对REST端点进行AJAX调用。在这种情况下,让AJAX调用也使用基于cookie的身份验证是有意义的,并在AJAX请求中包含“X-CSRF-Token”头,以防止各种棘手的基于Flash / Java / redirect的CSRF攻击。

  2. 您希望为您的应用程序公开完整的开发人员API,允许其他人创建与您的后端交互的应用程序/插件/等。在这种情况下,最好为API客户设置API ID和密钥,并使用OAuth或其他东西让第三方应用程序访问用户数据。这具有用户能够管理第三方应用程序可以访问其数据等的重要好处。

  3. 您希望自己的富客户端或移动应用能够访问您自己的后端。没有现有的基于cookie的会话管理,但您不一定需要(2)的灵活性。在这种情况下,使用像Devise的“token_authenticatable”这样的东西似乎是有意义的,只是在js的情况下将令牌存储在cookie或本地存储中,或者在移动应用程序的本地应用程序数据中存储。这就像Parse做的那样(但我会添加使存储的令牌过期的能力......)

  4. 这一切基本上都正确吗?我错过了什么专业吗?对我而言,由于“REST API”可以拥有不同的用例,所以只是有点混乱......

0 个答案:

没有答案