api - 如何实现无状态 REST API

标签 api rest stateless

我正在开发一个 REST API,编写移动应用程序的开发人员将使用它。用户将能够使用 3rd 方服务(Google、Twitter 等)来验证自己,这主要由 OAuth 处理(取决于相关服务)。我们在客户端应用程序和 API 服务器之间使用 2-legged OAuth(其中消费者 key / secret 是特定于应用程序的,当应用程序在那里注册时,开发人员从我们的站点获取它)。

我的问题是如何处理以无状态方式跟踪用户身份验证。我没有在每个请求中发送的用户凭据。我可以在用户登录时创建一个唯一的 session_id,然后在对 REST API 的每个请求中要求它。我的问题还有其他解决方案吗?从无状态 REST API 的角度来看,使用唯一的 session_id 来识别用户是否会导致任何问题?

最佳答案

免责声明:我无论如何都不是安全专家。

不要将其称为 session_Id。将其称为身份验证 token 并使用您自己的身份验证方案将 Authorization HTTP header 传递给它。见 Google AuthSub举个例子。

除了识别用户和确定他们是否有权执行请求之外,不要将此身份验证 token 用于任何其他目的。不要将任何状态与 token 相关联,也不要基于它检索用户首选项。

关于api - 如何实现无状态 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864761/

相关文章:

javascript - 在 Visualforce 页面中显示 Chatter 文件的 PDF

android - API自动将apk上传到Google Play?

Android @RestService 通过 androidannotations 注入(inject)导致 nullPointerException

rest - UML/API : How to model a RESTful API

design-patterns - 策略模式应该是无状态的吗?

ruby-on-rails - Rails 4 - 使用 Moz API 在 View 中显示信息

javascript - Angular 'For loop' 未按顺序显示

web-services - REST Web 服务的端点发布

javascript - 如何在 Vue.js 的功能组件模板中访问原生 HTML 元素?